diff options
author | Stafford Horne <shorne@gmail.com> | 2021-09-24 11:29:33 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2021-09-24 17:30:03 +0900 |
commit | 2efca218b56b0ef32289ad448c05b8f482a2e759 (patch) | |
tree | 55e9620d1d77c169f45167c299303ed5affbab1d /support | |
parent | 54ff4f1e39067bfd04fb2141710637a11ef88862 (diff) | |
download | glibc-2efca218b56b0ef32289ad448c05b8f482a2e759.zip glibc-2efca218b56b0ef32289ad448c05b8f482a2e759.tar.gz glibc-2efca218b56b0ef32289ad448c05b8f482a2e759.tar.bz2 |
xsysconf: Only fail on error results and errno set
When testing nptl/tst-pthread-attr-affinity-fail fails with:
error: xsysconf.c:33: sysconf (83): Cannot allocate memory
error: 1 test failures
This happens as xsysconf checks the errno after running sysconf.
Internally the sysconf request for _SC_NPROCESSORS_CONF on linux
allocates memory. But there is a problem, even though malloc succeeds
errno is getting set to ENOMEM.
POSIX allows successful calls to clobber errno. So xsysconf just
checking errno is wrong. Fix xsysconf by only failing if we have an
error result and errno is set.
Diffstat (limited to 'support')
-rw-r--r-- | support/xsysconf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/support/xsysconf.c b/support/xsysconf.c index 2607d3a..fce7795 100644 --- a/support/xsysconf.c +++ b/support/xsysconf.c @@ -29,7 +29,7 @@ xsysconf (int name) int old_errno = errno; errno = 0; long result = sysconf (name); - if (errno != 0) + if (result == -1 && errno != 0) FAIL_EXIT1 ("sysconf (%d): %m", name); errno = old_errno; return result; |