ShellPkg: Replace the usage of StrnCpy with CopyMem to avoid potential buffer overflow and refine the code style.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin <shumin.qiu@intel.com>
Signed-off-by: Yao Jiewen <jiewen.yao@intel.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16083 6f19259b-4bc3-4df7-8a09-765794883524
diff --git a/ShellPkg/Application/Shell/FileHandleWrappers.c b/ShellPkg/Application/Shell/FileHandleWrappers.c
index be786bb..d3fc5dc 100644
--- a/ShellPkg/Application/Shell/FileHandleWrappers.c
+++ b/ShellPkg/Application/Shell/FileHandleWrappers.c
@@ -1140,6 +1140,7 @@
   )

 {

   EFI_FILE_PROTOCOL_ENVIRONMENT  *EnvFileInterface;

+  UINTN                          EnvNameSize;

 

   if (EnvName == NULL) {

     return (NULL);

@@ -1148,7 +1149,8 @@
   //

   // Get some memory

   //

-  EnvFileInterface = AllocateZeroPool(sizeof(EFI_FILE_PROTOCOL_ENVIRONMENT)+StrSize(EnvName));

+  EnvNameSize = StrSize(EnvName);

+  EnvFileInterface = AllocateZeroPool(sizeof(EFI_FILE_PROTOCOL_ENVIRONMENT)+EnvNameSize);

   if (EnvFileInterface == NULL){

     return (NULL);

   }

@@ -1166,8 +1168,8 @@
   EnvFileInterface->Flush       = FileInterfaceNopGeneric;

   EnvFileInterface->Delete      = FileInterfaceEnvDelete;

   EnvFileInterface->Read        = FileInterfaceEnvRead;

-

-  StrnCpy(EnvFileInterface->Name, EnvName, StrLen(EnvName));

+  

+  CopyMem(EnvFileInterface->Name, EnvName, EnvNameSize);

 

   //

   // Assign the different members for Volatile and Non-Volatile variables