set zlib output buffer length properly after resizing the output buffer ok millert naddy
diff --git a/lib/inflate.c b/lib/inflate.c
index 83651a5..ca950e7 100644
--- a/lib/inflate.c
+++ b/lib/inflate.c
@@ -325,7 +325,6 @@ got_inflate_to_mem(uint8_t **outbuf, size_t *outlen,
if (zb.flags & GOT_INFLATE_F_HAVE_MORE) {
if (outbuf == NULL)
continue;
- zb.outlen = (nbuf * GOT_INFLATE_BUFSIZE) - *outlen;
newbuf = reallocarray(*outbuf, ++nbuf,
GOT_INFLATE_BUFSIZE);
if (newbuf == NULL) {
@@ -337,6 +336,7 @@ got_inflate_to_mem(uint8_t **outbuf, size_t *outlen,
}
*outbuf = newbuf;
zb.outbuf = newbuf + *outlen;
+ zb.outlen = (nbuf * GOT_INFLATE_BUFSIZE) - *outlen;
}
} while (zb.flags & GOT_INFLATE_F_HAVE_MORE);
@@ -385,7 +385,6 @@ got_inflate_to_mem_fd(uint8_t **outbuf, size_t *outlen,
if (zb.flags & GOT_INFLATE_F_HAVE_MORE) {
if (outbuf == NULL)
continue;
- zb.outlen = (nbuf * GOT_INFLATE_BUFSIZE) - *outlen;
newbuf = reallocarray(*outbuf, ++nbuf,
GOT_INFLATE_BUFSIZE);
if (newbuf == NULL) {
@@ -397,6 +396,7 @@ got_inflate_to_mem_fd(uint8_t **outbuf, size_t *outlen,
}
*outbuf = newbuf;
zb.outbuf = newbuf + *outlen;
+ zb.outlen = (nbuf * GOT_INFLATE_BUFSIZE) - *outlen;
}
} while (zb.flags & GOT_INFLATE_F_HAVE_MORE);