From ecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 22 Sep 2004 20:16:17 +0000 Subject: 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 --- libjava/java/util/zip/GZIPInputStream.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libjava/java/util/zip/GZIPInputStream.java') 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); -- cgit v1.1