diff options
author | Amin Hassani <ahassani@google.com> | 2018-03-08 15:48:59 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-03-23 14:51:11 -0700 |
commit | a86b108fc604d296edbd3f6c158a17175ef6f9fe (patch) | |
tree | 676c8ff56725a680fecc47584223d1164d09f46d /scripts/update_payload/checker.py | |
parent | 89afe86b007d21d11f3d4b6e139d300b411d2e17 (diff) |
update_payload: Allow check for given metadata size
Allow passing metadata size to check_update_payload so we can verify the
metadata size in omaha equals to the one in the payload.
BUG=chromium:820243
TEST=run paycheck.py with both valid and invalid metadata sizes reports as expected
TEST=unittests
Change-Id: Ib41ce77af77636fffec6752201c363e7fbbf868d
Reviewed-on: https://chromium-review.googlesource.com/955679
Commit-Ready: Amin Hassani <ahassani@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Diffstat (limited to 'scripts/update_payload/checker.py')
-rw-r--r-- | scripts/update_payload/checker.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/scripts/update_payload/checker.py b/scripts/update_payload/checker.py index e241b0b0..48ed0f40 100644 --- a/scripts/update_payload/checker.py +++ b/scripts/update_payload/checker.py @@ -1231,13 +1231,14 @@ class PayloadChecker(object): raise error.PayloadError('Unknown signature version (%d).' % sig.version) - def Run(self, pubkey_file_name=None, metadata_sig_file=None, + def Run(self, pubkey_file_name=None, metadata_sig_file=None, metadata_size=0, rootfs_part_size=0, kernel_part_size=0, report_out_file=None): """Checker entry point, invoking all checks. Args: pubkey_file_name: Public key used for signature verification. metadata_sig_file: Metadata signature, if verification is desired. + metadata_size: metadata size, if verification is desired rootfs_part_size: The size of rootfs partitions in bytes (default: infer based on payload type and version). kernel_part_size: The size of kernel partitions in bytes (default: use @@ -1258,6 +1259,12 @@ class PayloadChecker(object): self.payload.ResetFile() try: + # Check metadata_size (if provided). + if metadata_size and self.payload.data_offset != metadata_size: + raise error.PayloadError('Invalid payload metadata size in payload(%d) ' + 'vs given(%d)' % (self.payload.data_offset, + metadata_size)) + # Check metadata signature (if provided). if metadata_sig_file: metadata_sig = base64.b64decode(metadata_sig_file.read()) |