From a7ac020664f1de870b09807086565030246ad6fb Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 9 Dec 2017 18:20:29 +0100 Subject: 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. --- sys/src/libflate/deflate.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sys/src') 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); } -- cgit v1.2.3