X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=9c2740976a10d59c1baba7c1201a490b445b50fd;hp=e075e0a7355486c826497bd602cd64be7b1990ab;hb=4c5b439992ce99f1bed84c51e4d9c3a3cd118858;hpb=139f5961a078dfd23a469d98c3942f42595854aa diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index e075e0a7..9c274097 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); } @@ -297,7 +297,7 @@ main(int argc, const char *argv[]) PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS); #ifdef ZLIB - strcat(NGIRCd_ProtoID, "Z"); + strlcat(NGIRCd_ProtoID, "Z", sizeof NGIRCd_ProtoID); #endif if (Conf_OperCanMode) strcat(NGIRCd_ProtoID, "o"); @@ -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; } @@ -809,8 +817,8 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) "Changed working directory to \"%s\" ...", pwd->pw_dir); else - Log(LOG_INFO, - "Notice: Can't change working directory to \"%s\": %s!", + Log(LOG_ERR, + "Can't change working directory to \"%s\": %s!", pwd->pw_dir, strerror(errno)); } else Log(LOG_ERR, "Can't get user informaton for UID %d!?", Conf_UID);