diff options
| author | Alexander Barton <alex@barton.de> | 2024-04-13 19:43:54 +0200 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2024-04-13 20:48:54 +0200 |
| commit | 90fb3cf0a2b980acc1958bff315838a50fa4ccbe (patch) | |
| tree | f7b0127f9e9fb98a1ec564bd03f42dab0a7d8f90 | |
| parent | b77b9432c45d6f38c0ad6d9021afb4dd91f163e4 (diff) | |
| download | ngircd-90fb3cf0a2b980acc1958bff315838a50fa4ccbe.tar.gz ngircd-90fb3cf0a2b980acc1958bff315838a50fa4ccbe.zip | |
Don't abort startup when setgid/setuid() fails with EINVAL
Both setgid(2) as well as setuid(2) can fail with EINVAL in addition to EPERM, their manual pages state "EINVAL: The user/group ID specified in uid/gid is not valid in this user namespace ". So not only treat EPERM as an "acceptable error" and continue with logging the error, but do the same for EINVAL. This was triggered by the Void Linux xbps-uunshare(1) tool used for building "XBPS source packages" and reported by luca in #ngircd. Thanks!
| -rw-r--r-- | src/ngircd/ngircd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index b0610392..c2169c43 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -722,7 +722,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) Log(LOG_ERR, "Can't change group ID to %s(%u): %s!", grp ? grp->gr_name : "?", Conf_GID, strerror(real_errno)); - if (real_errno != EPERM) + if (real_errno != EPERM && real_errno != EINVAL) goto out; } #ifdef HAVE_SETGROUPS @@ -748,7 +748,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) Log(LOG_ERR, "Can't change user ID to %s(%u): %s!", pwd ? pwd->pw_name : "?", Conf_UID, strerror(real_errno)); - if (real_errno != EPERM) + if (real_errno != EPERM && real_errno != EINVAL) goto out; } } |