commit 9c8bf18964a7751ad34d51de04bf84f96956cc9e from: Stefan Sperling via: Thomas Adam date: Sat Feb 12 17:22:05 2022 UTC set zlib output buffer length properly after resizing the output buffer ok millert naddy commit - f6a55b4019ef1be061bac7e315541d2389a7bd1d commit + 9c8bf18964a7751ad34d51de04bf84f96956cc9e blob - 833d2e05dfe063a461c46a6fa502c2f1144ba185 blob + ffefe8d4e6ed7e2b338aa97ea44f95f7faee3434 --- lib/inflate.c +++ lib/inflate.c @@ -323,7 +323,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) { @@ -335,6 +334,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); @@ -383,7 +383,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) { @@ -395,6 +394,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);