]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Dxe/Service.c
enhanced security check.
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Dxe / Service.c
index 71e92399f42642a1749633f42f1b20c329dd088b..977db39d422190450cc75977f6df2f18f55f09a6 100644 (file)
@@ -106,8 +106,8 @@ GetWorker (
   }\r
 \r
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
-  StringTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :\r
-                          mPcdDatabase->DxeDb.Init.StringTable;\r
+  StringTable = (UINT16 *) (IsPeiDb ? &mPcdDatabase->PeiDb.Init.StringTable[0] :\r
+                                      &mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   \r
   Offset     = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;\r
   \r
@@ -118,13 +118,13 @@ GetWorker (
       break;\r
       \r
     case PCD_TYPE_HII:\r
-      GuidTable   = IsPeiDb ? mPcdDatabase->PeiDb.Init.GuidTable :\r
-                              mPcdDatabase->DxeDb.Init.GuidTable;\r
+      GuidTable   = (EFI_GUID *) (IsPeiDb ? &mPcdDatabase->PeiDb.Init.GuidTable[0] :\r
+                                            &mPcdDatabase->DxeDb.Init.GuidTable[0]);\r
                               \r
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
-      Guid = &(GuidTable[VariableHead->GuidTableIndex]);\r
-      Name = &(StringTable[VariableHead->StringIndex]);\r
+      Guid = GuidTable + VariableHead->GuidTableIndex;\r
+      Name = StringTable + VariableHead->StringIndex;\r
       VaraiableDefaultBuffer = (UINT8 *) PcdDb + VariableHead->DefaultValueOffset;\r
 \r
       Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
@@ -154,7 +154,7 @@ GetWorker (
 \r
     case PCD_TYPE_STRING:\r
       StringTableIdx = (UINT16) *((UINT8 *) PcdDb + Offset);\r
-      RetPtr = (VOID *) &StringTable[StringTableIdx];\r
+      RetPtr = (VOID *) (StringTable + StringTableIdx);\r
       break;\r
 \r
     case PCD_TYPE_DATA:\r
@@ -761,8 +761,8 @@ SetWorker (
 \r
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
 \r
-  StringTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :\r
-                          mPcdDatabase->DxeDb.Init.StringTable;\r
+  StringTable = (UINT16 *) (IsPeiDb ? &mPcdDatabase->PeiDb.Init.StringTable[0] :\r
+                                        &mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   \r
   InternalData = PcdDb + Offset;\r
 \r
@@ -774,7 +774,7 @@ SetWorker (
     \r
     case PCD_TYPE_STRING:\r
       if (SetPtrTypeSize (TmpTokenNumber, Size)) {\r
-        CopyMem (&StringTable[*((UINT16 *)InternalData)], Data, *Size);\r
+        CopyMem (StringTable + *((UINT16 *)InternalData), Data, *Size);\r
         Status = EFI_SUCCESS;\r
       } else {\r
         Status = EFI_INVALID_PARAMETER;\r
@@ -794,8 +794,8 @@ SetWorker (
                               \r
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
-      Guid = &(GuidTable[VariableHead->GuidTableIndex]);\r
-      Name = &(StringTable[VariableHead->StringIndex]);\r
+      Guid = GuidTable + VariableHead->GuidTableIndex;\r
+      Name = StringTable + VariableHead->StringIndex;\r
       VariableOffset = VariableHead->Offset;\r
 \r
       Status = SetHiiVariable (Guid, Name, Data, *Size, VariableOffset);\r