diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2012-08-24 15:02:28 -0700 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2012-08-24 15:02:28 -0700 |
commit | aa566e86c46d2264bf623e51f5840bde642548ad (patch) | |
tree | ccb156a5103cc7e6ced71e88f444acdb0e12654e /gzwrite.c | |
parent | 17068938ce5544ec3728402abd39bf3c55aec113 (diff) | |
download | zlib-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.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -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() */ |