X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=f0cb15045993b9a5df1d587f7d19d343c4cc6797;hb=a98bbc8e0b937f4fedf7ad852eaf109c6a9c5b8f;hp=dfae3366d1f72655cc8cc0e51088b369d9218114;hpb=68cb1a8c2e507e7c99f787fab3540b904cfa1cc1;p=ngircd-alex.git diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index dfae3366..f0cb1504 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -535,21 +535,23 @@ Pidfile_Create(pid_t pid) len = snprintf(pidbuf, sizeof pidbuf, "%ld\n", (long)pid); if (len < 0 || len >= (int)sizeof pidbuf) { - Log(LOG_ERR, "Error converting pid"); + Log(LOG_ERR, "Error converting process ID!"); close(pidfd); return; } if (write(pidfd, pidbuf, (size_t)len) != (ssize_t)len) - Log( LOG_ERR, "Can't write PID file (%s): %s", Conf_PidFile, strerror( errno )); + Log(LOG_ERR, "Can't write PID file (%s): %s!", Conf_PidFile, + strerror(errno)); - if( close(pidfd) != 0 ) - Log( LOG_ERR, "Error closing PID file (%s): %s", Conf_PidFile, strerror( errno )); + if (close(pidfd) != 0) + Log(LOG_ERR, "Error closing PID file (%s): %s!", Conf_PidFile, + strerror(errno)); } /* Pidfile_Create */ /** - * Redirect stdin, stdout and stderr to apropriate file handles. + * Redirect stdin, stdout and stderr to appropriate file handles. * * @param fd The file handle stdin, stdout and stderr should be redirected to. */ @@ -678,14 +680,14 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) /* Change root */ if (Conf_Chroot[0]) { if (chdir(Conf_Chroot) != 0) { - Log(LOG_ERR, "Can't chdir() in ChrootDir (%s): %s", + Log(LOG_ERR, "Can't chdir() in ChrootDir (%s): %s!", Conf_Chroot, strerror(errno)); goto out; } if (chroot(Conf_Chroot) != 0) { Log(LOG_ERR, - "Can't change root directory to \"%s\": %s", + "Can't change root directory to \"%s\": %s!", Conf_Chroot, strerror(errno)); goto out; } else { @@ -716,12 +718,19 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) if (setgid(Conf_GID) != 0) { real_errno = errno; grp = getgrgid(Conf_GID); - Log(LOG_ERR, "Can't change group ID to %s(%u): %s", + 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 @@ -730,9 +739,9 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) if (setuid(Conf_UID) != 0) { real_errno = errno; pwd = getpwuid(Conf_UID); - Log(LOG_ERR, "Can't change user ID to %s(%u): %s", + 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; } @@ -764,7 +773,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) setpgrp(0, getpid()); #endif if (chdir("/") != 0) - Log(LOG_ERR, "Can't change directory to '/': %s", + Log(LOG_ERR, "Can't change directory to '/': %s!", strerror(errno)); /* Detach stdin, stdout and stderr */ @@ -808,7 +817,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon) pwd->pw_dir); else Log(LOG_INFO, - "Notice: Can't change working directory to \"%s\": %s", + "Notice: 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);