shithub: riscv

Download patch

ref: a7ac020664f1de870b09807086565030246ad6fb
parent: 303fb4968634b7fd16815d4c16777dba0bf97f13
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Dec 9 13:20:29 EST 2017

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.

--- a/sys/src/libflate/deflate.c
+++ b/sys/src/libflate/deflate.c
@@ -1063,6 +1063,11 @@
 	}
 	if(bitcount[0] != 0)
 		return 0;
+	if(nbits == 0){
+		bitcount[1] = 1;
+		nbits = 1;
+		tab[0].bits = 1;
+	}
 	return hufftabinit(tab, n, bitcount, nbits);
 }