summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg/Library')
-rw-r--r--MdeModulePkg/Library/VarCheckLib/VarCheckLib.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c b/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c
index 3d1f8f6f46..60c141a6b9 100644
--- a/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c
+++ b/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c
@@ -141,19 +141,11 @@ VariablePropertyGetWithWildcardName (
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 1]) &&
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 2]) &&
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 3])) {
- if (mVarCheckVariableWithWildcardName[Index].VariableProperty.Revision != VAR_CHECK_VARIABLE_PROPERTY_REVISION) {
- return NULL;
- } else {
- return &mVarCheckVariableWithWildcardName[Index].VariableProperty;
- }
+ return &mVarCheckVariableWithWildcardName[Index].VariableProperty;
}
}
if (StrCmp (mVarCheckVariableWithWildcardName[Index].Name, VariableName) == 0) {
- if (mVarCheckVariableWithWildcardName[Index].VariableProperty.Revision != VAR_CHECK_VARIABLE_PROPERTY_REVISION) {
- return NULL;
- } else {
- return &mVarCheckVariableWithWildcardName[Index].VariableProperty;
- }
+ return &mVarCheckVariableWithWildcardName[Index].VariableProperty;
}
}
}
@@ -512,6 +504,9 @@ VarCheckLibVariablePropertySet (
Status = EFI_SUCCESS;
+ //
+ // Get the pointer of property data for set.
+ //
Property = VariablePropertyGetFunction (Name, Guid, FALSE);
if (Property != NULL) {
CopyMem (Property, VariableProperty, sizeof (*VariableProperty));
@@ -571,7 +566,12 @@ VarCheckLibVariablePropertyGet (
}
Property = VariablePropertyGetFunction (Name, Guid, TRUE);
- if (Property != NULL) {
+ //
+ // Also check the property revision before using the property data.
+ // There is no property set to this variable(wildcard name)
+ // if the revision is not VAR_CHECK_VARIABLE_PROPERTY_REVISION.
+ //
+ if ((Property != NULL) && (Property->Revision == VAR_CHECK_VARIABLE_PROPERTY_REVISION)) {
CopyMem (VariableProperty, Property, sizeof (*VariableProperty));
return EFI_SUCCESS;
}
@@ -619,7 +619,12 @@ VarCheckLibSetVariableCheck (
}
Property = VariablePropertyGetFunction (VariableName, VendorGuid, TRUE);
- if (Property != NULL) {
+ //
+ // Also check the property revision before using the property data.
+ // There is no property set to this variable(wildcard name)
+ // if the revision is not VAR_CHECK_VARIABLE_PROPERTY_REVISION.
+ //
+ if ((Property != NULL) && (Property->Revision == VAR_CHECK_VARIABLE_PROPERTY_REVISION)) {
if ((RequestSource != VarCheckFromTrusted) && ((Property->Property & VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY) != 0)) {
DEBUG ((EFI_D_INFO, "Variable Check ReadOnly variable fail %r - %g:%s\n", EFI_WRITE_PROTECTED, VendorGuid, VariableName));
return EFI_WRITE_PROTECTED;