From 37a0ecd32935685151f0cfb5a5466e6e360a0b8f Mon Sep 17 00:00:00 2001 From: Alex Klyubin Date: Wed, 23 Mar 2016 13:05:27 -0700 Subject: [PATCH] Fix bug in APK entry alignment. APK entry alignment logic assumes that input entries have zero-length comment and extra fields. When the assumption is broken, the logic silently breaks alignment of output entries. This happens, for example, when the APK to be signed is already aligned and thus may contain entries with non-empty extra fields. Given that APKs are not supposed to use comment and extra fields for anything useful and given that this signer already discards comment and extra fields of compressed entries, this change makes the signer discard comment and extra fields of STORED input entries as well. This unbreaks the existing alignment logic. Bug: 27814973 Change-Id: I8242b037e21ba7bcf45d0fe2afc8bfc47f1ec314 --- tools/signapk/src/com/android/signapk/SignApk.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/signapk/src/com/android/signapk/SignApk.java b/tools/signapk/src/com/android/signapk/SignApk.java index 4d6744ac0..ba84b42f9 100644 --- a/tools/signapk/src/com/android/signapk/SignApk.java +++ b/tools/signapk/src/com/android/signapk/SignApk.java @@ -544,6 +544,11 @@ class SignApk { // Preserve the STORED method of the input entry. outEntry = new JarEntry(inEntry); outEntry.setTime(timestamp); + // Discard comment and extra fields of this entry to + // simplify alignment logic below and for consistency with + // how compressed entries are handled later. + outEntry.setComment(null); + outEntry.setExtra(null); // 'offset' is the offset into the file at which we expect // the file data to begin. This is the value we need to