• Joe Tsai's avatar
    compress/bzip2: prevent zero-length Huffman codes · 8b360d5f
    Joe Tsai authored
    Unlike RFC 1951 (DEFLATE), bzip2 does not use zero-length Huffman codes
    to indicate that the symbol is missing. Instead, bzip2 uses a sparse
    bitmap to indicate which symbols are present. Thus, it is undefined what
    happens when a length of zero is used. Thus, fix the parsing logic so that
    the length cannot ever go below 1-bit similar to how the C logic does things.
    
    To confirm that the C bzip2 utility chokes on this data:
    	$ echo "425a6836314159265359b1f7404b000000400040002000217d184682ee48
    	a70a12163ee80960" | xxd -r -p | bzip2 -d
    
    	bzip2: Data integrity error when decompressing
    
    For reference see:
    	bzip2-1.0.6/decompress.c:320
    
    Change-Id: Ic1568f8e7f80cdea51d887b4d712cc239c2fe85e
    Reviewed-on: https://go-review.googlesource.com/20119
    Run-TryBot: Joe Tsai <joetsai@digital-static.net>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
    8b360d5f
Name
Last commit
Last update
..
bzip2 Loading commit data...
flate Loading commit data...
gzip Loading commit data...
lzw Loading commit data...
testdata Loading commit data...
zlib Loading commit data...