Fix decode functionality

Fix error when cannot decode EFI_SECTION_USER_INTERFACE
Fix error in File size logic within NextFwFile functionality

Signed-off-by: BrentHoltsclaw <brent.holtsclaw@intel.com>
This commit is contained in:
BrentHoltsclaw
2019-10-24 15:12:34 -07:00
parent 40ff7cffbf
commit 88673d56ec
2 changed files with 5 additions and 2 deletions
+4 -1
View File
@@ -263,7 +263,10 @@ def build_efi_modules_tree( _uefi, fwtype, data, Size, offset, polarity ):
sec.calc_hashes( sec.HeaderSize )
elif sec.Type == EFI_SECTION_USER_INTERFACE:
# "leaf" UI section: update section's UI name
sec.ui_string = sec.Image[sec.HeaderSize:-2].decode("utf-16")
try:
sec.ui_string = sec.Image[sec.HeaderSize:-2].decode("utf-16")
except UnicodeDecodeError:
pass
elif sec.Type == EFI_SECTION_GUID_DEFINED:
if len(sec.Image) < sec.HeaderSize+EFI_GUID_DEFINED_SECTION_size:
logger().warn("EFI Section seems to be malformed")
+1 -1
View File
@@ -682,7 +682,7 @@ def NextFwFile(FvImage, FvLength, fof, polarity):
next_offset = fof + 8
return (cur_offset, next_offset, None, None, None, None, None, None, None, None, update_or_deleted, None)
#Get File size
if Attributes & FFS_ATTRIB_LARGE_FILE:
if Attributes & FFS_ATTRIB_LARGE_FILE and len(FvImage) > fof + struct.calcsize(EFI_FFS_FILE_HEADER2):
fsize = struct.unpack("Q",FvImage[fof+file_header_size:fof+file_header_size+struct.calcsize("Q")])[0]
fsize &= 0xFFFFFFFF
if fsize == 0 or fsize > FvLength-fof: