Return an error if the gzputs string length can't fit in an int.

This commit is contained in:
Mark Adler 2017-02-11 23:54:17 -08:00
parent 60a5ecc62b
commit 90287635ef
1 changed files with 7 additions and 4 deletions

View File

@ -353,8 +353,7 @@ int ZEXPORT gzputs(file, str)
gzFile file;
const char *str;
{
int ret;
z_size_t len;
z_size_t len, put;
gz_statep state;
/* get internal structure */
@ -368,8 +367,12 @@ int ZEXPORT gzputs(file, str)
/* write string */
len = strlen(str);
ret = gz_write(state, str, len);
return ret == 0 && len != 0 ? -1 : ret;
if ((int)len < 0 || (unsigned)len != len) {
gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
return -1;
}
put = gz_write(state, str, len);
return put < len ? -1 : (int)len;
}
#if defined(STDC) || defined(Z_HAVE_STDARG_H)