The commit referenced below put a setvbuf() before checking what
fopen() returned. If the file could not be opened then the file
handle was NULL at setvbuf() crashed.
setvbuf() is now called after checking what fopen() returns and only
when it was successful.
References:
procps-ng/procps#76
commit
58ae084c2737cdee395915d45dbcb364648ac615
* ps: recognizes SCHED_DEADLINE as valid CPU scheduler
* ps: display NUMA node under which a thread ran issue #58
* sysctl: Permit empty string for value issue #74
+ * sysctl: Don't segv when file not available issue #76
* top: add config file support for XDG specification
* top: eliminated minor libnuma memory leak
* top: show fewer memory decimal places (configurable) issue #50
fp = fopen(tmpname, "r");
- if (iobuf)
- setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
-
if (!fp) {
switch (errno) {
case ENOENT:
break;
}
} else {
+ if (iobuf)
+ setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
+
errno = 0;
if (fgets(inbuf, sizeof inbuf - 1, fp)) {
/* this loop is required, see