diff options
author | Che-Liang Chiou <clchiou@chromium.org> | 2011-02-10 14:46:21 +0800 |
---|---|---|
committer | Che-Liang Chiou <clchiou@chromium.org> | 2011-02-10 14:46:21 +0800 |
commit | 31b206f218189d2ecb4b12cf05139bb423877a94 (patch) | |
tree | 058d27bc310703d6852662c18e8734f360438539 | |
parent | 0ca3830a7b51d6df3fe6777811d6ba60670caf9a (diff) | |
download | vboot-31b206f218189d2ecb4b12cf05139bb423877a94.tar.gz |
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
-rwxr-xr-x | utility/pack_firmware_image | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/utility/pack_firmware_image b/utility/pack_firmware_image index d6251cd4..7ec86073 100755 --- a/utility/pack_firmware_image +++ b/utility/pack_firmware_image @@ -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) |