diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHii.c b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHii.c index 9a44c5697e..ee73697d80 100644 --- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHii.c +++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHii.c @@ -595,12 +595,15 @@ HiiPsidRevert( OPAL_DISK *OpalDisk; TCG_RESULT Ret; OPAL_SESSION Session; + UINT8 TmpBuf[PSID_CHARACTER_STRING_END_LENGTH]; Ret = TcgResultFailure; OpalHiiGetBrowserData(); - UnicodeStrToAsciiStrS (gHiiConfiguration.Psid, (CHAR8*)Psid.Psid, PSID_CHARACTER_LENGTH); + ZeroMem (TmpBuf, sizeof (TmpBuf)); + UnicodeStrToAsciiStrS (gHiiConfiguration.Psid, (CHAR8*)TmpBuf, PSID_CHARACTER_STRING_END_LENGTH); + CopyMem (Psid.Psid, TmpBuf, PSID_CHARACTER_LENGTH); OpalDisk = HiiGetOpalDiskCB (gHiiConfiguration.SelectedDiskIndex); if (OpalDisk != NULL) { diff --git a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHiiFormValues.h b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHiiFormValues.h index 138bcb8935..88cf9f5b59 100644 --- a/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHiiFormValues.h +++ b/SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHiiFormValues.h @@ -21,6 +21,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // PSID Length #define PSID_CHARACTER_LENGTH 0x20 +#define PSID_CHARACTER_STRING_END_LENGTH 0x21 // ID's for various forms that will be used by HII #define FORMID_VALUE_MAIN_MENU 0x01 @@ -38,7 +39,7 @@ typedef struct { UINT8 KeepUserData; UINT16 AvailableFields; UINT16 Password[MAX_PASSWORD_CHARACTER_LENGTH]; - UINT16 Psid[PSID_CHARACTER_LENGTH]; + UINT16 Psid[PSID_CHARACTER_STRING_END_LENGTH]; UINT8 EnableBlockSid; } OPAL_HII_CONFIGURATION; #pragma pack()