about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2024-04-13 19:43:54 +0200
committerAlexander Barton <alex@barton.de>2024-04-13 20:48:54 +0200
commit90fb3cf0a2b980acc1958bff315838a50fa4ccbe (patch)
treef7b0127f9e9fb98a1ec564bd03f42dab0a7d8f90
parentb77b9432c45d6f38c0ad6d9021afb4dd91f163e4 (diff)
downloadngircd-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.c4
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;
 		}
 	}