mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 07:42:56 +00:00
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:
parent
ba918ac1b4
commit
32884a7ef6
@ -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
|
/* A wrapper around saferead_lim that maps a failure due to
|
||||||
exceeding the maximum size limitation to EOVERFLOW. */
|
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;
|
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)
|
if (s == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
if (len > maxlen || (int)len != len) {
|
if (len > maxlen || (int)len != len) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user