diff --git a/chipsec/hal/spi_uefi.py b/chipsec/hal/spi_uefi.py index 90b8ad14..b6648f96 100644 --- a/chipsec/hal/spi_uefi.py +++ b/chipsec/hal/spi_uefi.py @@ -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") diff --git a/chipsec/hal/uefi_common.py b/chipsec/hal/uefi_common.py index c6835cba..01454c93 100644 --- a/chipsec/hal/uefi_common.py +++ b/chipsec/hal/uefi_common.py @@ -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: