aboutsummaryrefslogtreecommitdiff
path: root/gzwrite.c
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2012-08-24 15:02:28 -0700
committerMark Adler <madler@alumni.caltech.edu>2012-08-24 15:02:28 -0700
commitaa566e86c46d2264bf623e51f5840bde642548ad (patch)
treeccb156a5103cc7e6ced71e88f444acdb0e12654e /gzwrite.c
parent17068938ce5544ec3728402abd39bf3c55aec113 (diff)
downloadzlib-aa566e86c46d2264bf623e51f5840bde642548ad.tar.gz
zlib-aa566e86c46d2264bf623e51f5840bde642548ad.tar.bz2
zlib-aa566e86c46d2264bf623e51f5840bde642548ad.zip
Fix unintialized value bug in gzputc() introduced by const patches.
Avoid the use of an uninitialized value when the write buffers have not been initialized. A recent change to avoid the use of strm-> next_in in order to resolve some const conflicts added the use of state->in in its place. This patch avoids the use of state->in when it is not initialized. Nothing bad would actually happen, since two variables set to the same unintialized value are subtracted. However valgrind was rightly complaining. So this fixes that.
Diffstat (limited to 'gzwrite.c')
-rw-r--r--gzwrite.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gzwrite.c b/gzwrite.c
index bf57913..f53aace 100644
--- a/gzwrite.c
+++ b/gzwrite.c
@@ -270,14 +270,16 @@ int ZEXPORT gzputc(file, c)
270 270
271 /* try writing to input buffer for speed (state->size == 0 if buffer not 271 /* try writing to input buffer for speed (state->size == 0 if buffer not
272 initialized) */ 272 initialized) */
273 if (strm->avail_in == 0) 273 if (state->size) {
274 strm->next_in = state->in; 274 if (strm->avail_in == 0)
275 have = strm->next_in + strm->avail_in - state->in; 275 strm->next_in = state->in;
276 if (have < state->size) { 276 have = strm->next_in + strm->avail_in - state->in;
277 state->in[have] = c; 277 if (have < state->size) {
278 strm->avail_in++; 278 state->in[have] = c;
279 state->x.pos++; 279 strm->avail_in++;
280 return c & 0xff; 280 state->x.pos++;
281 return c & 0xff;
282 }
281 } 283 }
282 284
283 /* no room in buffer or not initialized, use gz_write() */ 285 /* no room in buffer or not initialized, use gz_write() */