Fix magic number check

This commit is contained in:
Tim Gover
2019-09-12 11:11:56 +01:00
parent 391573d900
commit f9a4a6f1ab

View File

@@ -15,7 +15,8 @@ IMAGE_SIZE = 512 * 1024
# The number, order and size of the sections depends on the bootloader version # The number, order and size of the sections depends on the bootloader version
# but the following mask can be used to test for section headers and skip # but the following mask can be used to test for section headers and skip
# unknown data. # unknown data.
MAGIC_MASK = 0x55aaf00f MAGIC = 0x55aaf00f
MAGIC_MASK = 0xfffff00f
FILE_MAGIC = 0x55aaf11f # id for modifiable file, currently only bootconf.txt FILE_MAGIC = 0x55aaf11f # id for modifiable file, currently only bootconf.txt
FILE_HDR_LEN = 20 FILE_HDR_LEN = 20
FILENAME_LEN = 12 FILENAME_LEN = 12
@@ -37,7 +38,7 @@ class BootloaderImage(object):
magic = 0 magic = 0
while offset < IMAGE_SIZE: while offset < IMAGE_SIZE:
magic, length = struct.unpack_from('>LL', self._bytes, offset) magic, length = struct.unpack_from('>LL', self._bytes, offset)
if (magic & MAGIC_MASK) != MAGIC_MASK: if (magic & MAGIC_MASK) != MAGIC:
raise Exception('EEPROM is corrupted') raise Exception('EEPROM is corrupted')
if magic == FILE_MAGIC: # Found a file if magic == FILE_MAGIC: # Found a file