X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=d76b47d4ba86dbf3969dfbae1544701c0e4d9608;hp=e075e0a7355486c826497bd602cd64be7b1990ab;hb=99db111bca731490e8e91dfe3efe075179177005;hpb=139f5961a078dfd23a469d98c3942f42595854aa diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index e075e0a7..d76b47d4 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -264,7 +264,7 @@ main(int argc, const char *argv[]) /* Initialize the "main program": chroot environment, user and * group ID, ... */ if (!NGIRCd_Init(NGIRCd_NoDaemon)) { - Log(LOG_ALERT, "Fatal: Initialization failed"); + Log(LOG_ALERT, "Fatal: Initialization failed, exiting!"); exit(1); } @@ -673,9 +673,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) } /* SSL initialization */ - if (!ConnSSL_InitLibrary()) - Log(LOG_WARNING, - "Error during SSL initialization, continuing without SSL ..."); + if (!ConnSSL_InitLibrary()) { + Log(LOG_ERR, "Error during SSL initialization!"); + goto out; + } /* Change root */ if (Conf_Chroot[0]) { @@ -720,10 +721,17 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) grp = getgrgid(Conf_GID); Log(LOG_ERR, "Can't change group ID to %s(%u): %s!", grp ? grp->gr_name : "?", Conf_GID, - strerror(errno)); + strerror(real_errno)); if (real_errno != EPERM) goto out; } + if (setgroups(0, NULL) != 0) { + real_errno = errno; + Log(LOG_ERR, "Can't drop supplementary group IDs: %s!", + strerror(errno)); + if (real_errno != EPERM) + goto out; + } } #endif @@ -734,7 +742,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) pwd = getpwuid(Conf_UID); Log(LOG_ERR, "Can't change user ID to %s(%u): %s!", pwd ? pwd->pw_name : "?", Conf_UID, - strerror(errno)); + strerror(real_errno)); if (real_errno != EPERM) goto out; }