From: Yunhua Feng Date: Wed, 25 Jul 2018 03:21:07 +0000 (+0800) Subject: BaseTools: Parse decimal format INF_VERSION incorrect X-Git-Tag: edk2-stable201903~1339 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=f413763b6b8f2798595d468cf868ae5985d3eabc BaseTools: Parse decimal format INF_VERSION incorrect hex number 0x00010019, the major number is 0001, the minor number is 0019. the decimal number 1.25, the major number is 1, and the minor number is 25 Fix https://bugzilla.tianocore.org/show_bug.cgi?id=921 Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng Reviewed-by: Yonghong Zhu --- diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py index fbfc182c8b..2b1ab40439 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -376,9 +376,12 @@ class MetaFileParser(object): self._Version = int(Value, 0) elif decVersionPattern.match(Value): ValueList = Value.split('.') - Major = '%04o' % int(ValueList[0], 0) - Minor = '%04o' % int(ValueList[1], 0) - self._Version = int('0x' + Major + Minor, 0) + Major = int(ValueList[0], 0) + Minor = int(ValueList[1], 0) + if Major > 0xffff or Minor > 0xffff: + EdkLogger.error('Parser', FORMAT_INVALID, "Invalid version number", + ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1) + self._Version = int('0x{0:04x}{1:04x}'.format(Major, Minor), 0) else: EdkLogger.error('Parser', FORMAT_INVALID, "Invalid version number", ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1)