summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHridya Valsaraju <hridya@google.com>2019-01-24 15:59:15 -0800
committerHridya Valsaraju <hridya@google.com>2019-01-24 16:48:51 -0800
commita057a33e68a4fc893d1abdc828df3dbf5e3b436a (patch)
tree79ba13313405566c83e482ca5869999cbfd822c5
parent9ffdf5945d146ee6099048c504f6df7a367c2d4d (diff)
Populate header size for boot image header version 2 correctly
Bootimage header size for header version 2 was being populated incorrectly. Also, throw an error when an unsupported boot header version is passed in as an argument. Test: can see correct header size using unpack_bootimg.py Bug: 111136242 Change-Id: Ia4ed7b2469a5296546627c91f441c496d67f5ce3
-rw-r--r--mkbootimg/mkbootimg.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/mkbootimg/mkbootimg.py b/mkbootimg/mkbootimg.py
index 859b1e489..92b11a56d 100644
--- a/mkbootimg/mkbootimg.py
+++ b/mkbootimg/mkbootimg.py
@@ -62,7 +62,13 @@ def get_recovery_dtbo_offset(args):
def write_header(args):
+ BOOT_IMAGE_HEADER_V1_SIZE = 1648
+ BOOT_IMAGE_HEADER_V2_SIZE = 1660
BOOT_MAGIC = 'ANDROID!'.encode()
+
+ if (args.header_version > 2):
+ raise ValueError('Boot header version %d not supported' % args.header_version)
+
args.output.write(pack('8s', BOOT_MAGIC))
args.output.write(pack('10I',
filesize(args.kernel), # size in bytes
@@ -99,8 +105,12 @@ def write_header(args):
args.output.write(pack('Q', get_recovery_dtbo_offset(args))) # recovery dtbo offset
else:
args.output.write(pack('Q', 0)) # Will be set to 0 for devices without a recovery dtbo
- args.output.write(pack('I', args.output.tell() + 4)) # size of boot header
+ # Populate boot image header size for header versions 1 and 2.
+ if args.header_version == 1:
+ args.output.write(pack('I', BOOT_IMAGE_HEADER_V1_SIZE))
+ elif args.header_version == 2:
+ args.output.write(pack('I', BOOT_IMAGE_HEADER_V2_SIZE))
if args.header_version > 1:
args.output.write(pack('I', filesize(args.dtb))) # size in bytes