]> granicus.if.org Git - sudo/commitdiff
Ignore EOVERFLOW from pstat_getproc(), it is not a fatal error.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Thu, 7 Mar 2019 03:13:40 +0000 (20:13 -0700)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Thu, 7 Mar 2019 03:13:40 +0000 (20:13 -0700)
It just means that one of the fields in pstat lacks the precision to
store a value.  That's not an issue for pst_highestfd.

lib/util/closefrom.c

index 6cfe3204f0d168632f2166214fa638a4a417d6c1..106925b9ebbd4e7c92559b95941abeec1a86e001 100644 (file)
@@ -91,7 +91,12 @@ sudo_closefrom(int lowfd)
        return;
 #endif
 #if defined(HAVE_PSTAT_GETPROC)
-    if (pstat_getproc(&pstat, sizeof(pstat), 0, getpid()) != -1) {
+    /*
+     * EOVERFLOW is not a fatal error for the fields we use.
+     * See the "EOVERFLOW Error" section of pstat_getvminfo(3).
+     */                             
+    if (pstat_getproc(&pstat, sizeof(pstat), 0, getpid()) != -1 ||
+       errno == EOVERFLOW) {
        int fd;
 
        for (fd = lowfd; fd <= pstat.pst_highestfd; fd++)