commit 90fb3cf0a2b980acc1958bff315838a50fa4ccbe from: Alexander Barton date: Sat Apr 13 18:48:54 2024 UTC 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! commit - b77b9432c45d6f38c0ad6d9021afb4dd91f163e4 commit + 90fb3cf0a2b980acc1958bff315838a50fa4ccbe blob - b06103929e44e33e6dc28eb7d8dd68519bdc8ffb blob + c2169c4377af04b1f2c11884903ed5b26341a56a --- src/ngircd/ngircd.c +++ 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; } }