commit - ead79d3e39954ca8eed73f45cfc30287da79d46a
commit + 8916b201fa19c9ace46ca1d39e959d0d1aff6a27
blob - 985d09a9fe8beae2dae1fa00ba8197e8cfced8f9
blob + d774f791de614e811f7bf5e8e1a9b19cfad9160c
--- src/ngircd/ngircd.c
+++ src/ngircd/ngircd.c
#include "portab.h"
-static char UNUSED id[] = "$Id: ngircd.c,v 1.105 2005/07/08 21:04:39 alex Exp $";
+static char UNUSED id[] = "$Id: ngircd.c,v 1.106 2005/07/08 23:19:20 alex Exp $";
/**
* @file
}
}
- if ( Conf_UID == 0 ) {
- Log( LOG_INFO, "ServerUID must not be 0, switching to user nobody", Conf_UID );
+ if (Conf_UID == 0) {
+ Log(LOG_INFO, "ServerUID must not be 0, using \"nobody\" instead.", Conf_UID);
- if (!NGIRCd_getNobodyID(&Conf_UID, &Conf_GID )) {
- Log( LOG_WARNING, "Could not get uid/gid of user nobody: %s",
+ if (! NGIRCd_getNobodyID(&Conf_UID, &Conf_GID)) {
+ Log(LOG_WARNING, "Could not get user/group ID of user \"nobody\": %s",
errno ? strerror(errno) : "not found" );
return false;
}
}
- if( setgid( Conf_GID ) != 0 ) {
- real_errno = errno;
- Log( LOG_ERR, "Can't change group ID to %u: %s", Conf_GID, strerror( errno ));
- if (real_errno != EPERM)
- return false;
+ if (getgid() != Conf_GID) {
+ /* Change group ID */
+ if (setgid(Conf_GID) != 0) {
+ real_errno = errno;
+ Log( LOG_ERR, "Can't change group ID to %u: %s", Conf_GID, strerror( errno ));
+ if (real_errno != EPERM)
+ return false;
+ }
}
- if( setuid( Conf_UID ) != 0 ) {
- real_errno = errno;
- Log( LOG_ERR, "Can't change user ID to %u: %s", Conf_UID, strerror( errno ));
- if (real_errno != EPERM)
- return false;
+ if (getuid() != Conf_UID) {
+ /* Change user ID */
+ if (setuid(Conf_UID) != 0) {
+ real_errno = errno;
+ Log(LOG_ERR, "Can't change user ID to %u: %s", Conf_UID, strerror(errno));
+ if (real_errno != EPERM)
+ return false;
+ }
}
initialized = true;
Pidfile_Create( pid );
- /* check uid we are running as, can be different from values configured (e.g. if we were already
- started with a uid > 0 */
+ /* Check UID/GID we are running as, can be different from values
+ * configured (e. g. if we were already started with a UID>0. */
Conf_UID = getuid();
Conf_GID = getgid();
- assert( Conf_GID > 0);
- assert( Conf_UID > 0);
-
pwd = getpwuid( Conf_UID );
grp = getgrgid( Conf_GID );
+
Log( LOG_INFO, "Running as user %s(%ld), group %s(%ld), with PID %ld.",
pwd ? pwd->pw_name : "unknown", Conf_UID,
grp ? grp->gr_name : "unknown", Conf_GID, pid);