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:
Che-Liang Chiou
2011-02-10 14:46:21 +08:00
parent 0ca3830a7b
commit 31b206f218

View File

@@ -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)