virFileReadLimFD: diagnose maxlen <= 0, rather than passing it on...

to saferead_lim, which interprets it as a size_t.
* src/util/util.c (virFileReadLimFD): Do not malfunction when
maxlen < -1.  Return -1,EINVAL in that case.  Handle maxlen==0
in the same manner.
This commit is contained in:
Jim Meyering 2010-03-03 11:42:11 +01:00
parent ba918ac1b4
commit 32884a7ef6

View File

@ -1030,10 +1030,17 @@ saferead_lim (int fd, size_t max_len, size_t *length)
/* A wrapper around saferead_lim that maps a failure due to
exceeding the maximum size limitation to EOVERFLOW. */
int virFileReadLimFD(int fd, int maxlen, char **buf)
int
virFileReadLimFD(int fd, int maxlen, char **buf)
{
size_t len;
char *s = saferead_lim (fd, maxlen+1, &len);
char *s;
if (maxlen <= 0) {
errno = EINVAL;
return -1;
}
s = saferead_lim (fd, maxlen+1, &len);
if (s == NULL)
return -1;
if (len > maxlen || (int)len != len) {