Commit b388d840 authored by Ivan Krasin's avatar Ivan Krasin

Fixed a small bug with compress/flate/Inflater. It incorrectly checked

the size of chunk with uncompressed data (00 is terms of DEFLATE).

APPROVED=rsc
DELTA=15  (14 added, 0 deleted, 1 changed)
OCL=32105
CL=32238
parent 7729c3f9
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
package flate package flate
import ( import (
"bytes";
"bufio"; "bufio";
"compress/flate"; "compress/flate";
"io"; "io";
...@@ -129,3 +130,16 @@ func TestInitDecoder(t *testing.T) { ...@@ -129,3 +130,16 @@ func TestInitDecoder(t *testing.T) {
} }
} }
} }
func TestUncompressedSource(t *testing.T) {
decoder := NewInflater(bytes.NewBuffer(
[]byte{ 0x01, 0x01, 0x00, 0xfe, 0xff, 0x11 }));
output := make([]byte, 1);
n, error := decoder.Read(output);
if n != 1 || error != nil {
t.Fatalf("decoder.Read() = %d, %v, want 1, nil", n, error);
}
if output[0] != 0x11 {
t.Errorf("output[0] = %x, want 0x11", output[0]);
}
}
...@@ -542,7 +542,7 @@ func (f *inflater) dataBlock() os.Error { ...@@ -542,7 +542,7 @@ func (f *inflater) dataBlock() os.Error {
} }
n := int(f.buf[0]) | int(f.buf[1])<<8; n := int(f.buf[0]) | int(f.buf[1])<<8;
nn := int(f.buf[2]) | int(f.buf[3])<<8; nn := int(f.buf[2]) | int(f.buf[3])<<8;
if nn != ^n { if uint16(nn) != uint16(^n) {
return CorruptInputError(f.roffset); return CorruptInputError(f.roffset);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment