diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/getloadavg.c | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 2d4b6886dd..79f63385ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-12 Paul Eggert <eggert@cs.ucla.edu> + + [BZ #263] + * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Don't store + outside the buffer if the read returns 0. __strtod_l can't set + endp to NULL, so remove a test for that case. + 2004-07-12 Roland McGrath <roland@redhat.com> * manual/signal.texi (Interrupted Primitives): Make clear that diff --git a/sysdeps/unix/sysv/linux/getloadavg.c b/sysdeps/unix/sysv/linux/getloadavg.c index 6ef17fe0d0..6a521431ba 100644 --- a/sysdeps/unix/sysv/linux/getloadavg.c +++ b/sysdeps/unix/sysv/linux/getloadavg.c @@ -45,7 +45,7 @@ getloadavg (double loadavg[], int nelem) nread = read_not_cancel (fd, buf, sizeof buf - 1); close_not_cancel_no_status (fd); - if (nread < 0) + if (nread <= 0) return -1; buf[nread - 1] = '\0'; @@ -56,7 +56,7 @@ getloadavg (double loadavg[], int nelem) { char *endp; loadavg[i] = __strtod_l (p, &endp, &_nl_C_locobj); - if (endp == NULL || endp == p) + if (endp == p) /* This should not happen. The format of /proc/loadavg must have changed. Don't return with what we have, signal an error. */ |