Commit 686d24ff4f3d55e87e66b7ea741be79aadcfa5b0

Stefan Sperling 2020-03-15T13:32:58

Z_BUF_ERROR is not fatal; try to decompress more data when it happens

diff --git a/lib/inflate.c b/lib/inflate.c
index 3986b17..1dfd4a7 100644
--- a/lib/inflate.c
+++ b/lib/inflate.c
@@ -146,7 +146,7 @@ got_inflate_read_fd(struct got_inflate_buf *zb, int fd, size_t *outlenp)
 		ret = inflate(z, Z_SYNC_FLUSH);
 	} while (ret == Z_OK && z->avail_out > 0);
 
-	if (ret == Z_OK) {
+	if (ret == Z_OK || ret == Z_BUF_ERROR) {
 		zb->flags |= GOT_INFLATE_F_HAVE_MORE;
 	} else {
 		if (ret != Z_STREAM_END)
@@ -188,7 +188,7 @@ got_inflate_read_mmap(struct got_inflate_buf *zb, uint8_t *map, size_t offset,
 		*consumed += z->total_in - last_total_in;
 	} while (ret == Z_OK && z->avail_out > 0);
 
-	if (ret == Z_OK) {
+	if (ret == Z_OK || ret == Z_BUF_ERROR) {
 		zb->flags |= GOT_INFLATE_F_HAVE_MORE;
 	} else {
 		if (ret != Z_STREAM_END)