From 88673d56ec48c56a2c0c476a0fffcf8cbb0191c2 Mon Sep 17 00:00:00 2001 From: BrentHoltsclaw Date: Thu, 24 Oct 2019 15:12:34 -0700 Subject: [PATCH] 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 --- chipsec/hal/spi_uefi.py | 5 ++++- chipsec/hal/uefi_common.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) 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: