mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neil Conway <neil.con...@gmail.com>
Subject Re: Review Request 54952: Made `getpwnam_r` error handling more robust.
Date Thu, 22 Dec 2016 20:50:26 GMT

-----------------------------------------------------------
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


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message