mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-25 01:07:22 +00:00
Change pack_firmware_image::EntryBlob behavior
Old: Trim input file when it is larger than specified firmware section length
New: Raise exception when such thing happens
BUG=none
TEST=manual
$ cat > config <<EOF
OUTPUT='/dev/null'
SIZE=1024
ENTRIES = [
EntryBlob(offset=0, length=1, name='', flags=0, path='../LICENSE')
]
EOF
$ ./pack_firmware_image config
Traceback (most recent call last):
File "./pack_firmware_image", line 266, in <module>
main()
File "./pack_firmware_image", line 260, in main
pack_firmware_image(env['ENTRIES'], env['OUTPUT'], env['SIZE'])
File "./pack_firmware_image", line 227, in pack_firmware_image
entry.Pack(firmware_image, entries)
File "./pack_firmware_image", line 133, in Pack
raise PackError('blob too large: %d > %d' % (size, self.length))
__main__.PackError: blob too large: 1566 > 1
Review URL: http://codereview.chromium.org/6459017
Change-Id: I0b0fb8af37fc3ac055164c362278f32f93944ab4
This commit is contained in:
@@ -129,9 +129,9 @@ class EntryBlob(EntryFmapArea):
|
||||
|
||||
def Pack(self, firmware_image, entries):
|
||||
size = os.stat(self.path).st_size
|
||||
if size > 0:
|
||||
size = min(size, self.length)
|
||||
else:
|
||||
if size > self.length:
|
||||
raise PackError('blob too large: %d > %d' % (size, self.length))
|
||||
if size == 0: # special case for files like /dev/zero
|
||||
size = self.length
|
||||
with open(self.path, 'rb') as blob_image:
|
||||
firmware_image.seek(self.offset)
|
||||
|
||||
Reference in New Issue
Block a user