diff options
| author | Mark Adler <madler@alumni.caltech.edu> | 2011-12-13 22:25:59 -0800 |
|---|---|---|
| committer | Mark Adler <madler@alumni.caltech.edu> | 2011-12-13 22:29:37 -0800 |
| commit | 850a198ff1879e506c961c91da30009539ed14b3 (patch) | |
| tree | 14e4847af5c6536a1f662a9f6562ccfa13486709 | |
| parent | 377173b57ef9fab5066481a87a1901bd72fa2c32 (diff) | |
| download | zlib-850a198ff1879e506c961c91da30009539ed14b3.tar.gz zlib-850a198ff1879e506c961c91da30009539ed14b3.tar.bz2 zlib-850a198ff1879e506c961c91da30009539ed14b3.zip | |
Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF.
Z_BUF_ERROR was also being used for an unsuccessful gzungetc and for buffer
lengths that didn't fit in an int. Those uses were changed to Z_DATA_ERROR
in order to assure that Z_BUF_ERROR occurs only when a premature end of
input occurs, indicating that gzclearerr() can be used.
| -rw-r--r-- | gzread.c | 4 | ||||
| -rw-r--r-- | gzwrite.c | 2 |
2 files changed, 3 insertions, 3 deletions
| @@ -302,7 +302,7 @@ int ZEXPORT gzread(file, buf, len) | |||
| 302 | /* since an int is returned, make sure len fits in one, otherwise return | 302 | /* since an int is returned, make sure len fits in one, otherwise return |
| 303 | with an error (this avoids the flaw in the interface) */ | 303 | with an error (this avoids the flaw in the interface) */ |
| 304 | if ((int)len < 0) { | 304 | if ((int)len < 0) { |
| 305 | gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); | 305 | gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); |
| 306 | return -1; | 306 | return -1; |
| 307 | } | 307 | } |
| 308 | 308 | ||
| @@ -445,7 +445,7 @@ int ZEXPORT gzungetc(c, file) | |||
| 445 | 445 | ||
| 446 | /* if no room, give up (must have already done a gzungetc()) */ | 446 | /* if no room, give up (must have already done a gzungetc()) */ |
| 447 | if (state->x.have == (state->size << 1)) { | 447 | if (state->x.have == (state->size << 1)) { |
| 448 | gz_error(state, Z_BUF_ERROR, "out of room to push characters"); | 448 | gz_error(state, Z_DATA_ERROR, "out of room to push characters"); |
| 449 | return -1; | 449 | return -1; |
| 450 | } | 450 | } |
| 451 | 451 | ||
| @@ -185,7 +185,7 @@ int ZEXPORT gzwrite(file, buf, len) | |||
| 185 | /* since an int is returned, make sure len fits in one, otherwise return | 185 | /* since an int is returned, make sure len fits in one, otherwise return |
| 186 | with an error (this avoids the flaw in the interface) */ | 186 | with an error (this avoids the flaw in the interface) */ |
| 187 | if ((int)len < 0) { | 187 | if ((int)len < 0) { |
| 188 | gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); | 188 | gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); |
| 189 | return 0; | 189 | return 0; |
| 190 | } | 190 | } |
| 191 | 191 | ||
