]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
Fix the bug that the "Offset" parameter for DiskIo protocol should be byte-oriented.
[mirror_edk2.git] / MdeModulePkg / Universal / DriverSampleDxe / DriverSample.c
index 409c8e4740a32e81690df657e3548659af3f637e..8a46972f7d232dc8317104b9fbb8e7cd4cebc01a 100644 (file)
@@ -170,21 +170,21 @@ ValidatePassword (
   //\r
   // Get user input password\r
   //\r
-  BufferSize = 21 * sizeof (CHAR16);\r
-  Password = AllocateZeroPool (BufferSize);\r
-  ASSERT (Password != NULL);\r
-\r
-  Status = HiiLibGetString (PrivateData->HiiHandle[0], StringId, Password, &BufferSize);\r
-  if (EFI_ERROR (Status)) {\r
+  Password = HiiGetString (PrivateData->HiiHandle[0], StringId, NULL);\r
+  if (Password == NULL) {\r
+    return EFI_NOT_READY;\r
+  }\r
+  if (StrLen (Password) > 20) {\r
     FreePool (Password);\r
-    return Status;\r
+    return EFI_NOT_READY;\r
   }\r
 \r
   //\r
   // Validate old password\r
   //\r
-  EncodedPassword = AllocateCopyPool (21 * sizeof (CHAR16), Password);\r
+  EncodedPassword = AllocateZeroPool (21 * sizeof (CHAR16));\r
   ASSERT (EncodedPassword != NULL);\r
+  StrnCpy (EncodedPassword, Password, 21);\r
   EncodePassword (EncodedPassword, 20 * sizeof (CHAR16));\r
   if (CompareMem (EncodedPassword, PrivateData->Configuration.WhatIsThePassword2, 20 * sizeof (CHAR16)) != 0) {\r
     //\r
@@ -219,6 +219,7 @@ SetPassword (
 {\r
   EFI_STATUS                      Status;\r
   CHAR16                          *Password;\r
+  CHAR16                          *TempPassword;\r
   UINTN                           PasswordSize;\r
   DRIVER_SAMPLE_CONFIGURATION     *Configuration;\r
   UINTN                           BufferSize;\r
@@ -242,13 +243,19 @@ SetPassword (
   // Get user input password\r
   //\r
   Password = &PrivateData->Configuration.WhatIsThePassword2[0];\r
-  PasswordSize = sizeof (PrivateData->Configuration.WhatIsThePassword2);\r
-  \r
+  PasswordSize = sizeof (PrivateData->Configuration.WhatIsThePassword2); \r
   ZeroMem (Password, PasswordSize);\r
-  Status = HiiLibGetString (PrivateData->HiiHandle[0], StringId, Password, &BufferSize);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  \r
+  TempPassword = HiiGetString (PrivateData->HiiHandle[0], StringId, NULL);\r
+  if (TempPassword == NULL) {\r
+    return EFI_NOT_READY;\r
   }\r
+  if (StrLen (TempPassword) > PasswordSize / sizeof (CHAR16)) {\r
+    FreePool (TempPassword);\r
+    return EFI_NOT_READY;\r
+  }\r
+  StrnCpy (Password, TempPassword, PasswordSize / sizeof (CHAR16));\r
+  FreePool (TempPassword);\r
 \r
   //\r
   // Retrive uncommitted data from Browser\r
@@ -785,8 +792,6 @@ DriverSampleInit (
   )\r
 {\r
   EFI_STATUS                      Status;\r
-  EFI_STATUS                      SavedStatus;\r
-  EFI_HII_PACKAGE_LIST_HEADER     *PackageList;\r
   EFI_HII_HANDLE                  HiiHandle[2];\r
   EFI_SCREEN_DESCRIPTOR           Screen;\r
   EFI_HII_DATABASE_PROTOCOL       *HiiDatabase;\r
@@ -878,26 +883,17 @@ DriverSampleInit (
   //\r
   // Publish our HII data\r
   //\r
-  PackageList = HiiLibPreparePackageList (\r
-                  2,\r
-                  &mFormSetGuid,\r
-                  DriverSampleStrings,\r
-                  VfrBin\r
-                  );\r
-  if (PackageList == NULL) {\r
+  HiiHandle[0] = HiiAddPackages (\r
+                   &mFormSetGuid,\r
+                   DriverHandle[0],\r
+                   DriverSampleStrings,\r
+                   VfrBin,\r
+                   NULL\r
+                   );\r
+  if (HiiHandle[0] == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
-  Status = HiiDatabase->NewPackageList (\r
-                          HiiDatabase,\r
-                          PackageList,\r
-                          DriverHandle[0],\r
-                          &HiiHandle[0]\r
-                          );\r
-  FreePool (PackageList);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
   PrivateData->HiiHandle[0] = HiiHandle[0];\r
 \r
   //\r
@@ -913,26 +909,17 @@ DriverSampleInit (
 \r
   PrivateData->DriverHandle[1] = DriverHandle[1];\r
 \r
-  PackageList = HiiLibPreparePackageList (\r
-                  2,\r
-                  &mInventoryGuid,\r
-                  DriverSampleStrings,\r
-                  InventoryBin\r
-                  );\r
-  if (PackageList == NULL) {\r
+  HiiHandle[1] = HiiAddPackages (\r
+                   &mInventoryGuid,\r
+                   DriverHandle[1],\r
+                   DriverSampleStrings,\r
+                   InventoryBin,\r
+                   NULL\r
+                   );\r
+  if (HiiHandle[1] == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
-  Status = HiiDatabase->NewPackageList (\r
-                          HiiDatabase,\r
-                          PackageList,\r
-                          DriverHandle[1],\r
-                          &HiiHandle[1]\r
-                          );\r
-  FreePool (PackageList);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
   PrivateData->HiiHandle[1] = HiiHandle[1];\r
 \r
   //\r
@@ -941,9 +928,8 @@ DriverSampleInit (
   //\r
   NewString = L"700 Mhz";\r
 \r
-  Status = HiiLibSetString (HiiHandle[0], STRING_TOKEN (STR_CPU_STRING2), NewString);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  if (HiiSetString (HiiHandle[0], STRING_TOKEN (STR_CPU_STRING2), NewString, NULL) == 0) {\r
+    return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
   //\r
@@ -980,8 +966,6 @@ DriverSampleInit (
              );\r
     }\r
   }\r
-  \r
-  SavedStatus = EFI_SUCCESS;\r
 \r
   //\r
   // Default this driver is built into Flash device image, \r
@@ -1006,20 +990,13 @@ DriverSampleInit (
                              NULL,\r
                              NULL\r
                              );\r
-    SavedStatus = Status;\r
   \r
-    Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[0]);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
+    HiiRemovePackages (HiiHandle[0]);\r
   \r
-    Status = HiiDatabase->RemovePackageList (HiiDatabase, HiiHandle[1]);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
+    HiiRemovePackages (HiiHandle[1]);\r
   }\r
 \r
-  return SavedStatus;\r
+  return Status;\r
 }\r
 \r
 /**\r
@@ -1055,6 +1032,14 @@ DriverSampleUnload (
            );\r
   }\r
 \r
+  if (PrivateData->HiiHandle[0] != NULL) {\r
+    HiiRemovePackages (PrivateData->HiiHandle[0]);\r
+  }\r
+\r
+  if (PrivateData->HiiHandle[1] != NULL) {\r
+    HiiRemovePackages (PrivateData->HiiHandle[1]);\r
+  }\r
+\r
   if (PrivateData != NULL) {\r
     FreePool (PrivateData);\r
   }\r