mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-26 12:23:59 +08:00
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
This commit is contained in:
parent
9b270cce93
commit
ecd16bf665
@ -1,3 +1,12 @@
|
||||
2004-09-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
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.
|
||||
|
||||
2004-09-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA):
|
||||
|
@ -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);
|
||||
|
@ -70,6 +70,9 @@ public class InflaterInputStream extends FilterInputStream
|
||||
*/
|
||||
protected int len;
|
||||
|
||||
// We just use this if we are decoding one byte at a time with the
|
||||
// read() call.
|
||||
private byte[] onebytebuffer = new byte[1];
|
||||
|
||||
/**
|
||||
* Create an InflaterInputStream with the default decompresseor
|
||||
@ -155,6 +158,19 @@ public class InflaterInputStream extends FilterInputStream
|
||||
inf.setInput(buf, 0, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads one byte of decompressed data.
|
||||
*
|
||||
* The byte is in the lower 8 bits of the int.
|
||||
*/
|
||||
public int read() throws IOException
|
||||
{
|
||||
int nread = read(onebytebuffer, 0, 1);
|
||||
if (nread > 0)
|
||||
return onebytebuffer[0] & 0xff;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decompresses data into the byte array
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user