sysdeps: Don't raise RLIMIT_NOFILE beyond OPEN_MAX on macOS

dbus-daemon fails to launch on macOS 10.5 and above because of a breaking
change in setrlimit, in which RLIM_INFINITY is no longer supported
for RLIMIT_NOFILE. Instead we must use OPEN_MAX.

Resolves: #309
(cherry picked from commit 691946dabc)
This commit is contained in:
William Earley 2020-09-27 12:24:30 +01:00 committed by Simon McVittie
parent 2c5c9a750d
commit 7dc84fd22b

View file

@ -447,7 +447,14 @@ _dbus_rlimit_raise_fd_limit (DBusError *error)
* and older and non-systemd Linux systems would typically set rlim_cur
* to 1024 and rlim_max to 4096. */
if (lim.rlim_max == RLIM_INFINITY || lim.rlim_cur < lim.rlim_max)
lim.rlim_cur = lim.rlim_max;
{
#if defined(__APPLE__) && defined(__MACH__)
/* macOS 10.5 and above no longer allows RLIM_INFINITY for rlim_cur */
lim.rlim_cur = MIN (OPEN_MAX, lim.rlim_max);
#else
lim.rlim_cur = lim.rlim_max;
#endif
}
/* Early-return if there is nothing to do. */
if (lim.rlim_max == old.rlim_max &&