aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/util/zip/GZIPInputStream.java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2004-09-22 20:16:17 +0000
committerTom Tromey <tromey@gcc.gnu.org>2004-09-22 20:16:17 +0000
commitecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7 (patch)
tree2387909c6af042a5d6b9fd456ab20930ba600a61 /libjava/java/util/zip/GZIPInputStream.java
parent9b270cce9339106ca876bf4369156ef5d2bb5588 (diff)
downloadgcc-ecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7.zip
gcc-ecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7.tar.gz
gcc-ecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7.tar.bz2
re PR java/14446 (GZIPInputStream: corrupted gzip file - crc mismatch)
PR libgcj/14446: * java/util/zip/GZIPInputStream.java (read): Avoid sign extension when comparing CRCs. * java/util/zip/InflaterInputStream.java (onebytebuffer): New field. (read()): New overload. From-SVN: r87882
Diffstat (limited to 'libjava/java/util/zip/GZIPInputStream.java')
-rw-r--r--libjava/java/util/zip/GZIPInputStream.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/libjava/java/util/zip/GZIPInputStream.java b/libjava/java/util/zip/GZIPInputStream.java
index 9eef73e..5640163 100644
--- a/libjava/java/util/zip/GZIPInputStream.java
+++ b/libjava/java/util/zip/GZIPInputStream.java
@@ -230,7 +230,9 @@ public class GZIPInputStream
tmp[i] = (byte) eof_read();
}
- int header_crc = read4(tmp, 0);
+ // Be careful to avoid sign extension here; CRC32.getValue()
+ // returns a long.
+ long header_crc = read4(tmp, 0) & 0xffffffffL;
if (crc.getValue() != header_crc)
throw new ZipException("corrupted gzip file - crc mismatch");
int isize = read4(tmp, 4);