diff options
author | Tom Tromey <tromey@redhat.com> | 2004-09-22 20:16:17 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2004-09-22 20:16:17 +0000 |
commit | ecd16bf6652c30c8eacbb2dabbc4e6dfd12236c7 (patch) | |
tree | 2387909c6af042a5d6b9fd456ab20930ba600a61 /libjava/java/util/zip/GZIPInputStream.java | |
parent | 9b270cce9339106ca876bf4369156ef5d2bb5588 (diff) | |
download | gcc-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.java | 4 |
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); |