From 7438a85bf1388add286a89707079d9afca735814 Mon Sep 17 00:00:00 2001 From: "Chen, Lin Z" Date: Tue, 11 Jan 2022 21:01:12 +0800 Subject: BaseTools: Fix wrong variable header size There are two type variable header and their size are different, need to use matched size when calculating offset info, otherwise it'll destroy other variables content when patching. Signed-off-by: Chen, Lin Z Reviewed-by: Bob Feng --- BaseTools/Source/Python/AutoGen/GenVar.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/Python/AutoGen/GenVar.py b/BaseTools/Source/Python/AutoGen/GenVar.py index 3f3dc69e90..f2ad54ba63 100644 --- a/BaseTools/Source/Python/AutoGen/GenVar.py +++ b/BaseTools/Source/Python/AutoGen/GenVar.py @@ -20,6 +20,7 @@ import Common.GlobalData as GlobalData var_info = collections.namedtuple("uefi_var", "pcdindex,pcdname,defaultstoragename,skuname,var_name, var_guid, var_offset,var_attribute,pcd_default_value, default_value, data_type,PcdDscLine,StructurePcd") NvStorageHeaderSize = 28 VariableHeaderSize = 32 +AuthenticatedVariableHeaderSize = 60 class VariableMgr(object): def __init__(self, DefaultStoreMap, SkuIdMap): @@ -171,7 +172,10 @@ class VariableMgr(object): DataBuffer = VariableMgr.AlignData(var_name_buffer + default_data) data_size = len(DataBuffer) - offset += VariableHeaderSize + len(default_info.var_name.split(",")) + if GlobalData.gCommandLineDefines.get(TAB_DSC_DEFINES_VPD_AUTHENTICATED_VARIABLE_STORE,"FALSE").upper() == "TRUE": + offset += AuthenticatedVariableHeaderSize + len(default_info.var_name.split(",")) + else: + offset += VariableHeaderSize + len(default_info.var_name.split(",")) var_data_offset[default_info.pcdindex] = offset offset += data_size - len(default_info.var_name.split(",")) if GlobalData.gCommandLineDefines.get(TAB_DSC_DEFINES_VPD_AUTHENTICATED_VARIABLE_STORE,"FALSE").upper() == "TRUE": -- cgit v1.2.3