From: Hans Kristian Rosbach Date: Wed, 20 Aug 2025 14:24:16 +0000 (+0200) Subject: Add error propagation to gzread/gzwrite X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F1928%2Fhead;p=thirdparty%2Fzlib-ng.git Add error propagation to gzread/gzwrite --- diff --git a/gzread.c.in b/gzread.c.in index 0c9d7e20..91494b2c 100644 --- a/gzread.c.in +++ b/gzread.c.in @@ -25,9 +25,14 @@ static int gz_read_init(gz_state *state) { } /* Initialize inflate state */ - if (PREFIX(inflateInit2)(&(state->strm), MAX_WBITS + 16) != Z_OK) { + int ret = PREFIX(inflateInit2)(&(state->strm), MAX_WBITS + 16); + if (ret != Z_OK) { gz_buffer_free(state); - gz_error(state, Z_MEM_ERROR, "out of memory"); + if (ret == Z_MEM_ERROR) { + gz_error(state, Z_MEM_ERROR, "out of memory"); + } else { + gz_error(state, Z_STREAM_ERROR, "invalid compression parameters"); + } return -1; } return 0; diff --git a/gzwrite.c b/gzwrite.c index 8167ce20..5dc9e15b 100644 --- a/gzwrite.c +++ b/gzwrite.c @@ -29,10 +29,14 @@ static int gz_write_init(gz_state *state) { /* only need deflate state if compressing */ if (!state->direct) { /* allocate deflate memory, set up for gzip compression */ - ret = PREFIX(deflateInit2)(strm, state->level, Z_DEFLATED, MAX_WBITS + 16, DEF_MEM_LEVEL, state->strategy); + int ret = PREFIX(deflateInit2)(strm, state->level, Z_DEFLATED, MAX_WBITS + 16, DEF_MEM_LEVEL, state->strategy); if (ret != Z_OK) { gz_buffer_free(state); - gz_error(state, Z_MEM_ERROR, "out of memory"); + if (ret == Z_MEM_ERROR) { + gz_error(state, Z_MEM_ERROR, "out of memory"); + } else { + gz_error(state, Z_STREAM_ERROR, "invalid compression parameters"); + } return -1; } strm->next_in = NULL;