X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=f28ff05bcfb778065dc99a50e7459472eee8a68f;hb=88c3d4896af6c09de5d360d93ad8b02793aeb234;hp=ec2462aeb1d38abd7dc98ad1555c223c794bfb79;hpb=3193d5477c9f70e34f7ae636e51771b8e6039138;p=ngircd-alex.git diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index ec2462ae..f28ff05b 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -255,11 +255,11 @@ main(int argc, const char *argv[]) NGIRCd_SignalRestart = false; NGIRCd_SignalQuit = false; - Random_Init(); - /* Initialize modules, part I */ Log_Init(!NGIRCd_NoDaemon); + Random_Init(); Conf_Init(); + Log_ReInit(); /* Initialize the "main program": chroot environment, user and * group ID, ... */ @@ -642,12 +642,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) } if (chroot(Conf_Chroot) != 0) { - if (errno != EPERM) { - Log(LOG_ERR, - "Can't change root directory to \"%s\": %s", - Conf_Chroot, strerror(errno)); - goto out; - } + Log(LOG_ERR, + "Can't change root directory to \"%s\": %s", + Conf_Chroot, strerror(errno)); + goto out; } else { chrooted = true; Log(LOG_INFO, @@ -658,10 +656,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) /* Check user ID */ if (Conf_UID == 0) { + pwd = getpwuid(0); Log(LOG_INFO, - "ServerUID must not be 0, using \"nobody\" instead.", - Conf_UID); - + "ServerUID must not be %s(0), using \"nobody\" instead.", + pwd ? pwd->pw_name : "?"); if (!NGIRCd_getNobodyID(&Conf_UID, &Conf_GID)) { Log(LOG_WARNING, "Could not get user/group ID of user \"nobody\": %s", @@ -674,8 +672,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) if (getgid() != Conf_GID) { if (setgid(Conf_GID) != 0) { real_errno = errno; - Log(LOG_ERR, "Can't change group ID to %u: %s", - Conf_GID, strerror(errno)); + grp = getgrgid(Conf_GID); + Log(LOG_ERR, "Can't change group ID to %s(%u): %s", + grp ? grp->gr_name : "?", Conf_GID, + strerror(errno)); if (real_errno != EPERM) goto out; } @@ -685,8 +685,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) if (getuid() != Conf_UID) { if (setuid(Conf_UID) != 0) { real_errno = errno; - Log(LOG_ERR, "Can't change user ID to %u: %s", - Conf_UID, strerror(errno)); + pwd = getpwuid(Conf_UID); + Log(LOG_ERR, "Can't change user ID to %s(%u): %s", + pwd ? pwd->pw_name : "?", Conf_UID, + strerror(errno)); if (real_errno != EPERM) goto out; }