Commit 8882afa0 authored by Craig Small's avatar Craig Small

sysctl: Don't crash file fopen fails

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: #76 commit 58ae084c
parent a2c29622
Pipeline #15869154 passed with stage
in 2 minutes 48 seconds
......@@ -11,6 +11,7 @@ procps-ng-NEXT
* 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
......
......@@ -220,9 +220,6 @@ static int ReadSetting(const char *restrict const name)
fp = fopen(tmpname, "r");
if (iobuf)
setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
if (!fp) {
switch (errno) {
case ENOENT:
......@@ -244,6 +241,9 @@ static int ReadSetting(const char *restrict const name)
break;
}
} else {
if (iobuf)
setvbuf(fp, iobuf, _IOFBF, IOBUFSIZ);
errno = 0;
if (fgets(inbuf, sizeof inbuf - 1, fp)) {
/* this loop is required, see
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment