X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=DuetPkg%2FFSVariable%2FFSVariable.c;h=d20b3a78e3ed4598c9ed2500b67c792b57c2767e;hb=3709c4cd5bc3956fee59f31bdd1b7dc5b61a039a;hp=653860f1b2d4b8e1d9f16c8622f49d06eb235bb6;hpb=e56dd2ce1342c358962eeab09d54cb1a95c064bf;p=mirror_edk2.git diff --git a/DuetPkg/FSVariable/FSVariable.c b/DuetPkg/FSVariable/FSVariable.c index 653860f1b2..d20b3a78e3 100644 --- a/DuetPkg/FSVariable/FSVariable.c +++ b/DuetPkg/FSVariable/FSVariable.c @@ -22,7 +22,7 @@ Abstract: #include "FSVariable.h" VARIABLE_STORE_HEADER mStoreHeaderTemplate = { - VARIABLE_STORE_SIGNATURE, + gEfiVariableGuid, VOLATILE_VARIABLE_STORE_SIZE, VARIABLE_STORE_FORMATTED, VARIABLE_STORE_HEALTHY, @@ -70,7 +70,7 @@ Returns: { if (Variable == NULL || Variable->StartId != VARIABLE_DATA || - (sizeof (VARIABLE_HEADER) + Variable->NameSize + Variable->DataSize) > MAX_VARIABLE_SIZE + (sizeof (VARIABLE_HEADER) + Variable->NameSize + Variable->DataSize) > FixedPcdGet32(PcdMaxVariableSize) ) { return FALSE; } @@ -100,15 +100,18 @@ Returns: --*/ { - if ((VarStoreHeader->Signature == mStoreHeaderTemplate.Signature) && + if (CompareGuid (&VarStoreHeader->Signature, &mStoreHeaderTemplate.Signature) && (VarStoreHeader->Format == mStoreHeaderTemplate.Format) && (VarStoreHeader->State == mStoreHeaderTemplate.State) ) { return EfiValid; - } else if (VarStoreHeader->Signature == VAR_DEFAULT_VALUE_32 && - VarStoreHeader->Size == VAR_DEFAULT_VALUE_32 && - VarStoreHeader->Format == VAR_DEFAULT_VALUE && - VarStoreHeader->State == VAR_DEFAULT_VALUE + } else if (((UINT32 *)(&VarStoreHeader->Signature))[0] == VAR_DEFAULT_VALUE_32 && + ((UINT32 *)(&VarStoreHeader->Signature))[1] == VAR_DEFAULT_VALUE_32 && + ((UINT32 *)(&VarStoreHeader->Signature))[2] == VAR_DEFAULT_VALUE_32 && + ((UINT32 *)(&VarStoreHeader->Signature))[3] == VAR_DEFAULT_VALUE_32 && + VarStoreHeader->Size == VAR_DEFAULT_VALUE_32 && + VarStoreHeader->Format == VAR_DEFAULT_VALUE && + VarStoreHeader->State == VAR_DEFAULT_VALUE ) { return EfiRaw; @@ -292,7 +295,7 @@ Returns: Status = gBS->AllocatePool ( EfiBootServicesData, ValidBufferSize, - &ValidBuffer + (VOID**) &ValidBuffer ); if (EFI_ERROR (Status)) { return Status; @@ -667,8 +670,6 @@ Returns: Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr); } - - return EFI_NOT_FOUND; } EFI_STATUS @@ -736,17 +737,17 @@ Returns: // // The size of the VariableName, including the Unicode Null in bytes plus - // the DataSize is limited to maximum size of MAX_HARDWARE_ERROR_VARIABLE_SIZE (32K) - // bytes for HwErrRec, and MAX_VARIABLE_SIZE (1024) bytes for the others. + // the DataSize is limited to maximum size of FixedPcdGet32(PcdMaxHardwareErrorVariableSize) + // bytes for HwErrRec, and FixedPcdGet32(PcdMaxVariableSize) bytes for the others. // if ((Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) { - if ((DataSize > MAX_HARDWARE_ERROR_VARIABLE_SIZE) || - (sizeof (VARIABLE_HEADER) + StrSize (VariableName) + DataSize > MAX_HARDWARE_ERROR_VARIABLE_SIZE)) { + if ((DataSize > FixedPcdGet32(PcdMaxHardwareErrorVariableSize)) || + (sizeof (VARIABLE_HEADER) + StrSize (VariableName) + DataSize > FixedPcdGet32(PcdMaxHardwareErrorVariableSize))) { return EFI_INVALID_PARAMETER; } } else { - if ((DataSize > MAX_VARIABLE_SIZE) || - (sizeof (VARIABLE_HEADER) + StrSize (VariableName) + DataSize > MAX_VARIABLE_SIZE)) { + if ((DataSize > FixedPcdGet32(PcdMaxVariableSize)) || + (sizeof (VARIABLE_HEADER) + StrSize (VariableName) + DataSize > FixedPcdGet32(PcdMaxVariableSize))) { return EFI_INVALID_PARAMETER; } } @@ -1037,15 +1038,15 @@ Returns: *RemainingVariableStorageSize = VariableStoreHeader->Size - sizeof (VARIABLE_STORE_HEADER); // - // Let *MaximumVariableSize be MAX_VARIABLE_SIZE with the exception of the variable header size. + // Let *MaximumVariableSize be FixedPcdGet32(PcdMaxVariableSize) with the exception of the variable header size. // - *MaximumVariableSize = MAX_VARIABLE_SIZE - sizeof (VARIABLE_HEADER); + *MaximumVariableSize = FixedPcdGet32(PcdMaxVariableSize) - sizeof (VARIABLE_HEADER); // // Harware error record variable needs larger size. // if ((Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) { - *MaximumVariableSize = MAX_HARDWARE_ERROR_VARIABLE_SIZE - sizeof (VARIABLE_HEADER); + *MaximumVariableSize = FixedPcdGet32(PcdMaxHardwareErrorVariableSize) - sizeof (VARIABLE_HEADER); } // @@ -1134,7 +1135,7 @@ Returns: Status = gBS->AllocatePool ( EfiRuntimeServicesData, (UINTN) sizeof (VARIABLE_GLOBAL), - &mGlobal + (VOID**) &mGlobal ); if (EFI_ERROR (Status)) { return Status; @@ -1182,7 +1183,7 @@ Returns: Status = EFI_UNSUPPORTED; return Status; } - + Status = FileStorageConstructor ( &mGlobal->VariableStore[NonVolatile], &mGlobal->GoVirtualChildEvent[NonVolatile], @@ -1307,9 +1308,9 @@ OnVirtualAddressChangeFsv ( for (Index = 0; Index < MaxType; Index++) { mGlobal->GoVirtualChildEvent[Index] (Event, mGlobal->VariableStore[Index]); - EfiConvertPointer (0, &mGlobal->VariableStore[Index]); + EfiConvertPointer (0, (VOID**) &mGlobal->VariableStore[Index]); EfiConvertPointer (0, &mGlobal->VariableBase[Index]); } EfiConvertPointer (0, &mGlobal->Scratch); - EfiConvertPointer (0, &mGlobal); + EfiConvertPointer (0, (VOID**) &mGlobal); }