diff options
author | Shashikant Baviskar <shashikant.baviskar@sony.com> | 2018-04-12 12:37:21 +0900 |
---|---|---|
committer | Satoshi Futenma <Satoshi.Futenma@sony.com> | 2018-08-21 22:15:27 +0900 |
commit | b1a9e080b446f09788d73645c42e2e78ae6f2d15 (patch) | |
tree | b15de4bf8e7b1c689a4e0d469e1568c4381afa5e /scripts/update_device.py | |
parent | 2a0ea6321578d30be3caa806a65149bffd09672a (diff) |
A/B update: Replace the zip FileHeader mechanism for update package
When the update package gets larger than 2 GiB, payload.bin offset
mentioned in metadata file for ota-streaming-property-files gets
shifted (CrAU of payload.bin) because ZipInfo FileHeader() returns
incorrect value. To solve the issue, offset is re-calculated from
fixed bytes of central directory file header, filename length and
extra length.
Test: manually create an A/B update package and run it using
update_device.py
Bug: 111198589
Change-Id: Iadb2e8bbff478d9b006bb155d57fea35968d84b7
Diffstat (limited to 'scripts/update_device.py')
-rwxr-xr-x | scripts/update_device.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/scripts/update_device.py b/scripts/update_device.py index 64cfbe3b..5c19b89a 100755 --- a/scripts/update_device.py +++ b/scripts/update_device.py @@ -89,7 +89,9 @@ class AndroidOTAPackage(object): otazip = zipfile.ZipFile(otafilename, 'r') payload_info = otazip.getinfo(self.OTA_PAYLOAD_BIN) - self.offset = payload_info.header_offset + len(payload_info.FileHeader()) + self.offset = payload_info.header_offset + self.offset += zipfile.sizeFileHeader + self.offset += len(payload_info.extra) + len(payload_info.filename) self.size = payload_info.file_size self.properties = otazip.read(self.OTA_PAYLOAD_PROPERTIES_TXT) |