1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-03-11 04:58:19 +03:00

sd-event: never pass negative errnos as signalfd to signalfd

We treat any negative value as "invalid fd", but signalfd only
accepts -1.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-12-19 14:36:08 +01:00
parent da850694a9
commit cbff793ffb

View File

@ -659,7 +659,9 @@ static int event_make_signal_data(
ss_copy = d->sigset;
assert_se(sigaddset(&ss_copy, sig) >= 0);
r = signalfd(d->fd, &ss_copy, SFD_NONBLOCK|SFD_CLOEXEC);
r = signalfd(d->fd >= 0 ? d->fd : -1, /* the first arg must be -1 or a valid signalfd */
&ss_copy,
SFD_NONBLOCK|SFD_CLOEXEC);
if (r < 0) {
r = -errno;
goto fail;