]> git.proxmox.com Git - mirror_edk2.git/commitdiff
SecurityPkg OpalPasswordDxe: Clean PSID buffer.
authorEric Dong <eric.dong@intel.com>
Mon, 21 Nov 2016 06:38:31 +0000 (14:38 +0800)
committerStar Zeng <star.zeng@intel.com>
Mon, 21 Nov 2016 07:37:57 +0000 (15:37 +0800)
Change callback handler type to avoid saving PSID info in
browser temp buffer. Also clean the buffer after using it.

Cc: Feng Tian <feng.tian@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHii.c
SecurityPkg/Tcg/Opal/OpalPasswordDxe/OpalHiiPrivate.h

index 5937ce2613786c54fa71e22f1eb41a4116992318..7371b7e892d6ab801e24c3e432b0d14cf0402de7 100644 (file)
@@ -501,14 +501,13 @@ DriverCallback(
 \r
       case HII_KEY_ID_ENTER_PASSWORD:\r
         return HiiPasswordEntered(Value->string);\r
+\r
+      case HII_KEY_ID_ENTER_PSID:\r
+        return HiiPsidRevert(Value->string);\r
+\r
     }\r
   } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     switch (HiiKeyId) {\r
-      case HII_KEY_ID_ENTER_PSID:\r
-        HiiPsidRevert();\r
-        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
-        return EFI_SUCCESS;\r
-\r
       case HII_KEY_ID_BLOCKSID:\r
         switch (Value->u8) {\r
           case 0:\r
@@ -661,12 +660,14 @@ HiiPopulateDiskInfoForm(
 /**\r
   Reverts the Opal disk to factory default.\r
 \r
+  @param   PsidStringId      The string id for the PSID info.\r
+\r
   @retval  EFI_SUCCESS       Do the required action success.\r
 \r
 **/\r
 EFI_STATUS\r
 HiiPsidRevert(\r
-  VOID\r
+  EFI_STRING_ID         PsidStringId\r
   )\r
 {\r
   CHAR8                         Response[DEFAULT_RESPONSE_SIZE];\r
@@ -674,15 +675,19 @@ HiiPsidRevert(
   OPAL_DISK                     *OpalDisk;\r
   TCG_RESULT                    Ret;\r
   OPAL_SESSION                  Session;\r
+  CHAR16                        *UnicodeStr;\r
   UINT8                         TmpBuf[PSID_CHARACTER_STRING_END_LENGTH];\r
 \r
   Ret = TcgResultFailure;\r
 \r
-  OpalHiiGetBrowserData();\r
-\r
+  UnicodeStr = HiiGetString (gHiiPackageListHandle, PsidStringId, NULL);\r
   ZeroMem (TmpBuf, sizeof (TmpBuf));\r
-  UnicodeStrToAsciiStrS (gHiiConfiguration.Psid, (CHAR8*)TmpBuf, PSID_CHARACTER_STRING_END_LENGTH);\r
+  UnicodeStrToAsciiStrS (UnicodeStr, (CHAR8*)TmpBuf, PSID_CHARACTER_STRING_END_LENGTH);\r
   CopyMem (Psid.Psid, TmpBuf, PSID_CHARACTER_LENGTH);\r
+  HiiSetString (gHiiPackageListHandle, PsidStringId, L"", NULL);\r
+  ZeroMem (TmpBuf, sizeof (TmpBuf));\r
+  ZeroMem (UnicodeStr, StrSize (UnicodeStr));\r
+  FreePool (UnicodeStr);\r
 \r
   OpalDisk = HiiGetOpalDiskCB (gHiiConfiguration.SelectedDiskIndex);\r
   if (OpalDisk != NULL) {\r
index a7709dd63dba415301fe81c198fbbf72ca733ceb..ec5a93cf3f3e0237a484443107e3326fc3cef1c5 100644 (file)
@@ -225,12 +225,14 @@ HiiSetBlockSidAction (
 /**\r
   Reverts the Opal disk to factory default.\r
 \r
+  @param   PsidStringId      The string id for the PSID info.\r
+\r
   @retval  EFI_SUCCESS       Do the required action success.\r
 \r
 **/\r
 EFI_STATUS\r
 HiiPsidRevert(\r
-  VOID\r
+  EFI_STRING_ID         PsidStringId\r
   );\r
 \r
 /**\r