summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChe-Liang Chiou <clchiou@chromium.org>2011-02-10 14:46:21 +0800
committerChe-Liang Chiou <clchiou@chromium.org>2011-02-10 14:46:21 +0800
commit31b206f218189d2ecb4b12cf05139bb423877a94 (patch)
tree058d27bc310703d6852662c18e8734f360438539
parent0ca3830a7b51d6df3fe6777811d6ba60670caf9a (diff)
downloadvboot-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-xutility/pack_firmware_image6
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)