When you have a difference of 1 between parameter 2 and parameter 4 on StrnCpyS or StrnCatS you can use the non-n version. I noted the first one below, but there are more. This just makes the code easier to read and simpler to maintain.
Reviewed-by: Jaben Carsey <jaben.car...@intel.com> >-----Original Message----- >From: Zhang Lubo [mailto:lubo.zh...@intel.com] >Sent: Tuesday, June 30, 2015 1:26 AM >To: edk2-devel@lists.sourceforge.net >Subject: [edk2] [patch] SecurityPkg:Replace unsafe string functions. > >Replace unsafe string functions with new added safe string functions. > >Contributed-under: TianoCore Contribution Agreement 1.0 >Signed-off-by: Zhang Lubo <lubo.zh...@intel.com> >--- > .../DxeTcgPhysicalPresenceLib.c | 90 +++++++++++----------- > .../DxeTrEEPhysicalPresenceLib.c | 18 ++--- > .../UserProfileManagerDxe/UserProfileModify.c | 6 +- > .../EsalVariableDxeSal/Variable.c | 4 +- > .../VariableAuthenticated/RuntimeDxe/VarCheck.c | 2 +- > .../VariableAuthenticated/RuntimeDxe/Variable.c | 8 +- > .../SecureBootConfigFileExplorer.c | 21 ++--- > .../SecureBootConfigDxe/SecureBootConfigMisc.c | 2 +- > 8 files changed, 77 insertions(+), 74 deletions(-) > >diff --git >a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c >b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c >index 7fbeb0a..5660552 100644 >--- a/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c >+++ b/SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.c >@@ -542,11 +542,11 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); Switch to StrCatS for simplicity. > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_DISABLE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_DISABLE)); >@@ -554,15 +554,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_WARNING)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_ACTIVATE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACTIVATE)); >@@ -570,11 +570,11 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_DEACTIVATE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_DEACTIVATE)); >@@ -582,15 +582,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_WARNING)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_CLEAR: > CautionKey = TRUE; >@@ -599,16 +599,16 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >- StrnCat (ConfirmText, L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_ENABLE_ACTIVATE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_ENABLE_ACTIVATE)); >@@ -616,15 +616,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_ON)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_DEACTIVATE_DISABLE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_DEACTIVATE_DISABLE)); >@@ -632,19 +632,19 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_OFF)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_WARNING)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_OWNER_INSTALL_TRUE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_ALLOW_TAKE_OWNERSHIP)); >@@ -652,11 +652,11 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_OWNER_INSTALL_FALSE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_DISALLOW_TAKE_OWNERSHIP)); >@@ -664,11 +664,11 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_ENABLE_ACTIVATE_OWNER_TRUE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_TURN_ON)); >@@ -676,15 +676,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_ON)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_DEACTIVATE_DISABLE_OWNER_FALSE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_TURN_OFF)); >@@ -692,19 +692,19 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_OFF)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_WARNING)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_DEFERRED_PP_UNOWNERED_FIELD_UPGRADE: > CautionKey = TRUE; >@@ -713,15 +713,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_UPGRADE_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_MAINTAIN)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_OPERATOR_AUTH: > // >@@ -738,23 +738,23 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_ON)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR_CONT)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_NO_PPI_PROVISION_TRUE: > TmpStr2 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NO_PPI_PROVISION)); >@@ -762,15 +762,15 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_PPI_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_ACCEPT_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NO_PPI_INFO)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_NO_PPI_CLEAR_TRUE: > CautionKey = TRUE; >@@ -779,24 +779,24 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_PPI_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >- StrnCat (ConfirmText, L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NO_PPI_INFO)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_SET_NO_PPI_MAINTENANCE_TRUE: > CautionKey = TRUE; >@@ -805,19 +805,19 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_PPI_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_MAINTAIN)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NO_PPI_INFO)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR: > CautionKey = TRUE; >@@ -826,16 +826,16 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >- StrnCat (ConfirmText, L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case PHYSICAL_PRESENCE_ENABLE_ACTIVATE_CLEAR_ENABLE_ACTIVATE: > CautionKey = TRUE; >@@ -844,23 +844,23 @@ UserConfirm ( > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN (TPM_NOTE_ON)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR_CONT)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = PhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > default: > ; >@@ -875,11 +875,11 @@ UserConfirm ( > BufSize -= StrSize (ConfirmText); > UnicodeSPrint (ConfirmText + StrLen (ConfirmText), BufSize, TmpStr1, > TmpStr2); > > DstStr[80] = L'\0'; > for (Index = 0; Index < StrLen (ConfirmText); Index += 80) { >- StrnCpy(DstStr, ConfirmText + Index, 80); >+ StrnCpyS(DstStr, 81, ConfirmText + Index, 80); > Print (DstStr); > } > > FreePool (TmpStr1); > FreePool (TmpStr2); >diff --git >a/SecurityPkg/Library/DxeTrEEPhysicalPresenceLib/DxeTrEEPhysicalPresenceLib.c >b/SecurityPkg/Library/DxeTrEEPhysicalPresenceLib/DxeTrEEPhysicalPresenceLib.c >index 9ff9d88..1cc9ed6 100644 >--- >a/SecurityPkg/Library/DxeTrEEPhysicalPresenceLib/DxeTrEEPhysicalPresenceLib.c >+++ >b/SecurityPkg/Library/DxeTrEEPhysicalPresenceLib/DxeTrEEPhysicalPresenceLib.c >@@ -259,16 +259,16 @@ TrEEUserConfirm ( > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >- StrnCat (ConfirmText, L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > case TREE_PHYSICAL_PRESENCE_SET_NO_PPI_CLEAR_TRUE: > CautionKey = TRUE; >@@ -277,24 +277,24 @@ TrEEUserConfirm ( > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_PPI_HEAD_STR)); > UnicodeSPrint (ConfirmText, BufSize, TmpStr1, TmpStr2); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NOTE_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_WARNING_CLEAR)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >- StrnCat (ConfirmText, L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), L" \n\n", (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_CAUTION_KEY)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > > TmpStr1 = TrEEPhysicalPresenceGetStringById (STRING_TOKEN > (TPM_NO_PPI_INFO)); >- StrnCat (ConfirmText, TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); >+ StrnCatS (ConfirmText, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText), TmpStr1, (BufSize / sizeof (CHAR16)) - StrLen >(ConfirmText) - 1); > FreePool (TmpStr1); > break; > > default: > ; >@@ -309,11 +309,11 @@ TrEEUserConfirm ( > BufSize -= StrSize (ConfirmText); > UnicodeSPrint (ConfirmText + StrLen (ConfirmText), BufSize, TmpStr1, > TmpStr2); > > DstStr[80] = L'\0'; > for (Index = 0; Index < StrLen (ConfirmText); Index += 80) { >- StrnCpy(DstStr, ConfirmText + Index, 80); >+ StrnCpyS(DstStr, 81, ConfirmText + Index, 80); > Print (DstStr); > } > > FreePool (TmpStr1); > FreePool (TmpStr2); >diff --git >a/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileModify.c >b/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileModify.c >index a0eb4af..2fb17e8 100644 >--- a/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileModify.c >+++ b/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileModify.c >@@ -343,15 +343,15 @@ AddStr ( > > TmpStr = AllocateZeroPool (StrLength); > ASSERT (TmpStr != NULL); > > if (*Source1 == NULL) { >- StrCpy (TmpStr, Source2);; >+ StrCpyS (TmpStr, StrLength / sizeof (CHAR16), Source2); > } else { >- StrCpy (TmpStr, *Source1); >+ StrCpyS (TmpStr, StrLength / sizeof (CHAR16), *Source1); > FreePool (*Source1); >- StrCat (TmpStr, Source2); >+ StrCatS (TmpStr, (StrLength - StrSize(Source1) + 2)/ sizeof >(CHAR16),Source2); > } > > *Source1 = TmpStr; > } > >diff --git a/SecurityPkg/VariableAuthenticated/EsalVariableDxeSal/Variable.c >b/SecurityPkg/VariableAuthenticated/EsalVariableDxeSal/Variable.c >index 0b2775d..d28e445 100644 >--- a/SecurityPkg/VariableAuthenticated/EsalVariableDxeSal/Variable.c >+++ b/SecurityPkg/VariableAuthenticated/EsalVariableDxeSal/Variable.c >@@ -734,11 +734,11 @@ UpdateVariableInfo ( > ASSERT (gVariableInfo != NULL); > > CopyGuid (&gVariableInfo->VendorGuid, VendorGuid); > gVariableInfo->Name = AllocatePool (StrSize (VariableName)); > ASSERT (gVariableInfo->Name != NULL); >- StrCpy (gVariableInfo->Name, VariableName); >+ StrCpyS (gVariableInfo->Name, StrSize (VariableName) / sizeof (CHAR16), >VariableName); > gVariableInfo->Volatile = Volatile; > > gBS->InstallConfigurationTable (&gEfiAuthenticatedVariableGuid, > gVariableInfo); > } > >@@ -776,11 +776,11 @@ UpdateVariableInfo ( > ASSERT (Entry->Next != NULL); > > CopyGuid (&Entry->Next->VendorGuid, VendorGuid); > Entry->Next->Name = AllocatePool (StrSize (VariableName)); > ASSERT (Entry->Next->Name != NULL); >- StrCpy (Entry->Next->Name, VariableName); >+ StrCpyS (Entry->Next->Name, StrSize (VariableName) / sizeof (CHAR16), >VariableName); > Entry->Next->Volatile = Volatile; > } > > } > } >diff --git a/SecurityPkg/VariableAuthenticated/RuntimeDxe/VarCheck.c >b/SecurityPkg/VariableAuthenticated/RuntimeDxe/VarCheck.c >index 740632f..3c5e9c7 100644 >--- a/SecurityPkg/VariableAuthenticated/RuntimeDxe/VarCheck.c >+++ b/SecurityPkg/VariableAuthenticated/RuntimeDxe/VarCheck.c >@@ -1158,11 +1158,11 @@ VarCheckVariablePropertySet ( > if (Entry == NULL) { > Status = EFI_OUT_OF_RESOURCES; > goto Done; > } > VariableName = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry)); >- StrnCpy (VariableName, Name, StrLen (Name)); >+ StrnCpyS (VariableName, StrSize (Name) / sizeof (CHAR16), Name, StrLen >(Name)); > CopyGuid (&Entry->Guid, Guid); > CopyMem (&Entry->VariableProperty, VariableProperty, sizeof > (*VariableProperty)); > InsertTailList (&mVarCheckVariableList, &Entry->Link); > } > >diff --git a/SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c >b/SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c >index 15d0531..436ce2a 100644 >--- a/SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c >+++ b/SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c >@@ -126,11 +126,11 @@ UpdateVariableInfo ( > ASSERT (gVariableInfo != NULL); > > CopyGuid (&gVariableInfo->VendorGuid, VendorGuid); > gVariableInfo->Name = AllocatePool (StrSize (VariableName)); > ASSERT (gVariableInfo->Name != NULL); >- StrCpy (gVariableInfo->Name, VariableName); >+ StrCpyS (gVariableInfo->Name, StrSize (VariableName) / sizeof (CHAR16), >VariableName); > gVariableInfo->Volatile = Volatile; > } > > > for (Entry = gVariableInfo; Entry != NULL; Entry = Entry->Next) { >@@ -162,11 +162,11 @@ UpdateVariableInfo ( > ASSERT (Entry->Next != NULL); > > CopyGuid (&Entry->Next->VendorGuid, VendorGuid); > Entry->Next->Name = AllocatePool (StrSize (VariableName)); > ASSERT (Entry->Next->Name != NULL); >- StrCpy (Entry->Next->Name, VariableName); >+ StrCpyS (Entry->Next->Name, StrSize (VariableName) / sizeof (CHAR16), >VariableName); > Entry->Next->Volatile = Volatile; > } > > } > } >@@ -1092,11 +1092,11 @@ Reclaim ( > goto Done; > } > CopyMem (CurrPtr, (UINT8*) PubKeyHeader, sizeof (VARIABLE_HEADER)); > Variable = (VARIABLE_HEADER*) CurrPtr; > Variable->DataSize = NewPubKeySize; >- StrCpy (GetVariableNamePtr (Variable), GetVariableNamePtr (PubKeyHeader)); >+ StrCpyS (GetVariableNamePtr (Variable), sizeof (VARIABLE_HEADER) / sizeof >(CHAR16), GetVariableNamePtr (PubKeyHeader)); > CopyMem (GetVariableDataPtr (Variable), NewPubKeyStore, NewPubKeySize); > CurrPtr = (UINT8*) GetNextVariablePtr (Variable); > CommonVariableTotalSize += (UINTN) CurrPtr - (UINTN) Variable; > if (IsUserVariable (Variable)) { > CommonUserVariableTotalSize += (UINTN) CurrPtr - (UINTN) Variable; >@@ -2873,11 +2873,11 @@ VariableLockRequestToLock ( > goto Done; > } > } > > Name = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry)); >- StrnCpy (Name, VariableName, StrLen (VariableName)); >+ StrnCpyS (Name, StrSize (VariableName) / sizeof (CHAR16), VariableName, >StrLen (VariableName)); > CopyGuid (&Entry->Guid, VendorGuid); > InsertTailList (&mLockedVariableList, &Entry->Link); > > Done: > ReleaseLockOnlyAtBootTime > (&mVariableModuleGlobal->VariableGlobal.VariableServicesLock); >diff --git >a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigFileExplorer.c >b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigFileExplorer.c >index 5ca013c..feb4271 100644 >--- >a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigFileExplorer.c >+++ >b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigFileExplorer.c >@@ -137,10 +137,11 @@ AppendFileName ( > IN CHAR16 *Str2 > ) > { > UINTN Size1; > UINTN Size2; >+ UINTN SizeTemp; > CHAR16 *Str; > CHAR16 *TmpStr; > CHAR16 *Ptr; > CHAR16 *LastSlash; > >@@ -150,16 +151,18 @@ AppendFileName ( > ASSERT (Str != NULL); > > TmpStr = AllocateZeroPool (Size1 + Size2 + sizeof (CHAR16)); > ASSERT (TmpStr != NULL); > >- StrCat (Str, Str1); >+ StrCatS (Str, (Size1 + Size2 + sizeof (CHAR16)) / sizeof (CHAR16), Str1); >+ SizeTemp = Size1 + Size2 + sizeof (CHAR16); > if (!((*Str == '\\') && (*(Str + 1) == 0))) { >- StrCat (Str, L"\\"); >+ StrCatS (Str, (Size2 + sizeof (CHAR16)) / sizeof (CHAR16), L"\\"); >+ SizeTemp = Size2 + sizeof (CHAR16); > } > >- StrCat (Str, Str2); >+ StrCatS (Str, SizeTemp / sizeof (CHAR16), Str2); > > Ptr = Str; > LastSlash = Str; > while (*Ptr != 0) { > if (*Ptr == '\\' && *(Ptr + 1) == '.' && *(Ptr + 2) == '.' && *(Ptr + 3) > == L'\\') { >@@ -168,27 +171,27 @@ AppendFileName ( > // DO NOT convert the .. if it is at the end of the string. This will > // break the .. behavior in changing directories. > // > > // >- // Use TmpStr as a backup, as StrCpy in BaseLib does not handle copy of >two strings >+ // Use TmpStr as a backup, as StrCpyS in BaseLib does not handle copy >of two strings > // that overlap. > // >- StrCpy (TmpStr, Ptr + 3); >- StrCpy (LastSlash, TmpStr); >+ StrCpyS (TmpStr, (Size1 + Size2 + sizeof (CHAR16)) / sizeof (CHAR16), >Ptr + 3); >+ StrCpyS (LastSlash, (Size1 + Size2 + sizeof (CHAR16)) / sizeof >(CHAR16), TmpStr); > Ptr = LastSlash; > } else if (*Ptr == '\\' && *(Ptr + 1) == '.' && *(Ptr + 2) == '\\') { > // > // Convert a "\.\" to a "\" > // > > // >- // Use TmpStr as a backup, as StrCpy in BaseLib does not handle copy of >two strings >+ // Use TmpStr as a backup, as StrCpyS in BaseLib does not handle copy >of two strings > // that overlap. > // >- StrCpy (TmpStr, Ptr + 2); >- StrCpy (Ptr, TmpStr); >+ StrCpyS (TmpStr, (Size1 + Size2 + sizeof (CHAR16)) / sizeof (CHAR16), >Ptr + 2); >+ StrCpyS (Ptr, (Size1 + Size2 + sizeof (CHAR16)) / sizeof (CHAR16), >TmpStr); > Ptr = LastSlash; > } else if (*Ptr == '\\') { > LastSlash = Ptr; > } > >diff --git >a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c >b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c >index 13c7c27..735d0ab 100644 >--- >a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c >+++ >b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c >@@ -182,11 +182,11 @@ StringToGuid ( > Buffer = (CHAR16 *) AllocateZeroPool (sizeof (CHAR16) * (StrLen + 1)); > if (Buffer == NULL) { > return EFI_OUT_OF_RESOURCES; > } > >- StrCpy (Buffer, Str); >+ StrCpyS (Buffer, (StrLen + 1), Str); > > // > // Data1 > // > PtrBuffer = Buffer; >-- >1.9.5.msysgit.1 > > > >------------------------------------------------------------------------------ >Don't Limit Your Business. Reach for the Cloud. >GigeNET's Cloud Solutions provide you with the tools and support that >you need to offload your IT needs and focus on growing your business. >Configured For All Businesses. Start Your Cloud Today. >https://www.gigenetcloud.com/ >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Don't Limit Your Business. Reach for the Cloud. GigeNET's Cloud Solutions provide you with the tools and support that you need to offload your IT needs and focus on growing your business. Configured For All Businesses. Start Your Cloud Today. https://www.gigenetcloud.com/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel