diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-09 18:20:29 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-09 18:20:29 +0100 |
commit | a7ac020664f1de870b09807086565030246ad6fb (patch) | |
tree | a2c6cc659514ea39f87c4937fae8f2035244f947 /sys/src/libflate/deflate.c | |
parent | 303fb4968634b7fd16815d4c16777dba0bf97f13 (diff) |
libflate: force non-empty huffman table in mkzprecode() for deflate
busybox gunzip fails on empty (offset) huffman tables,
so force one entry.
gzip states in a comment:
The pkzip format requires that at least one distance code exists,
and that at least one bit should be sent even if there is only one
possible code.
Diffstat (limited to 'sys/src/libflate/deflate.c')
-rw-r--r-- | sys/src/libflate/deflate.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/src/libflate/deflate.c b/sys/src/libflate/deflate.c index 1eb7e866c..11c24cd6d 100644 --- a/sys/src/libflate/deflate.c +++ b/sys/src/libflate/deflate.c @@ -1063,6 +1063,11 @@ mkgzprecode(Huff *tab, ulong *count, int n, int maxbits) } if(bitcount[0] != 0) return 0; + if(nbits == 0){ + bitcount[1] = 1; + nbits = 1; + tab[0].bits = 1; + } return hufftabinit(tab, n, bitcount, nbits); } |