-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/54952/
-----------------------------------------------------------
(Updated Dec. 22, 2016, 8:50 p.m.)
Review request for mesos and Alexander Rukletsov.
Changes
-------
New approach, per discussion with AlexR.
Summary (updated)
-----------------
Made `getpwnam_r` error handling more robust.
Bugs: MESOS-6826
https://issues.apache.org/jira/browse/MESOS-6826
Repository: mesos
Description (updated)
-------
According to POSIX, `getpwnam_r` returns 0 (and sets `result` to the
null pointer) when the specified user name is not found. However,
certain versions of Linux (e.g., RHEL7, recent Arch Linux) return
non-zero and set `errno` (to one of several different values) when
`getpwnam_r` is passed an invalid user name.
In stout, we want to treat the "invalid user name" and "user name not
found" cases the same. Both the POSIX spec and Linux manpages call out
certain errno values as definitely indicating errors (e.g., EIO,
EMFILE). On Linux, we check `errno` and return an error to the caller if
`errno` appears in that list. We treat `errno` values not in that list
as equivalent to "user not found".
On other (Unix) platforms, we treat any non-zero return value from
`getpwnam_r` as indicating an error.
Diffs (updated)
-----
3rdparty/stout/include/stout/os/posix/su.hpp
f3f45ebf006f0f8e7e70b0f4c4ed76465530c58e
3rdparty/stout/tests/os_tests.cpp 8d2005b1f109b4025aa8368600763db9c829d0c5
Diff: https://reviews.apache.org/r/54952/diff/
Testing
-------
`make check` on Arch Linux. `OsTest.User` fails without this patch but succeeds
with this patch.
Thanks,
Neil Conway