summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2013-07-03 16:23:31 -0700
committerDirk Rettschlag <dirk.rettschlag@gmail.com>2013-07-11 21:31:57 +0200
commitfb94a6abf82e5822b492f7d6a49c5da8c3317aeb (patch)
tree4fdd7dfa2a3f45f303cff2a738771afb2c0fd6a1
parentfe70e697810a7a8b9ce47325f53d16fdbc19f1f8 (diff)
downloadlibcore-fb94a6abf82e5822b492f7d6a49c5da8c3317aeb.zip
libcore-fb94a6abf82e5822b492f7d6a49c5da8c3317aeb.tar.gz
libcore-fb94a6abf82e5822b492f7d6a49c5da8c3317aeb.tar.bz2
Values in ZIP files are unsigned.
Bug: 9695860 Change-Id: I5c12dc5f3c70a9fe081adf5bf5b6b4b3a115e7e1
-rw-r--r--luni/src/main/java/java/util/zip/ZipEntry.java12
-rw-r--r--luni/src/main/java/java/util/zip/ZipFile.java2
2 files changed, 7 insertions, 7 deletions
diff --git a/luni/src/main/java/java/util/zip/ZipEntry.java b/luni/src/main/java/java/util/zip/ZipEntry.java
index e2bfc8d..003d265 100644
--- a/luni/src/main/java/java/util/zip/ZipEntry.java
+++ b/luni/src/main/java/java/util/zip/ZipEntry.java
@@ -360,18 +360,18 @@ public class ZipEntry implements ZipConstants, Cloneable {
}
it.seek(10);
- compressionMethod = it.readShort();
- time = it.readShort();
- modDate = it.readShort();
+ compressionMethod = it.readShort() & 0xffff;
+ time = it.readShort() & 0xffff;
+ modDate = it.readShort() & 0xffff;
// These are 32-bit values in the file, but 64-bit fields in this object.
crc = ((long) it.readInt()) & 0xffffffffL;
compressedSize = ((long) it.readInt()) & 0xffffffffL;
size = ((long) it.readInt()) & 0xffffffffL;
- nameLength = it.readShort();
- int extraLength = it.readShort();
- int commentLength = it.readShort();
+ nameLength = it.readShort() & 0xffff;
+ int extraLength = it.readShort() & 0xffff;
+ int commentLength = it.readShort() & 0xffff;
// This is a 32-bit value in the file, but a 64-bit field in this object.
it.seek(42);
diff --git a/luni/src/main/java/java/util/zip/ZipFile.java b/luni/src/main/java/java/util/zip/ZipFile.java
index 816d1b8..181e198 100644
--- a/luni/src/main/java/java/util/zip/ZipFile.java
+++ b/luni/src/main/java/java/util/zip/ZipFile.java
@@ -259,7 +259,7 @@ public class ZipFile implements ZipConstants {
// the one coming in the central header.
RAFStream rafstrm = new RAFStream(raf, entry.mLocalHeaderRelOffset + 28);
DataInputStream is = new DataInputStream(rafstrm);
- int localExtraLenOrWhatever = Short.reverseBytes(is.readShort());
+ int localExtraLenOrWhatever = Short.reverseBytes(is.readShort()) & 0xffff;
is.close();
// Skip the name and this "extra" data or whatever it is: