X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fngircd%2Fngircd.c;h=623b96c1a34e890deaba5d4b81f93a9e4294ce44;hb=07c3e62e1109b555e932a8e2a245ed34668a1724;hp=a2b4666f1fc8263b71df8e910700a296edd7a10f;hpb=72accd4ee5d74a59dee93a6b203017e01d5bb3a0;p=ngircd-alex.git diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index a2b4666f..623b96c1 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: ngircd.c,v 1.37 2002/03/28 14:15:33 alex Exp $ + * $Id: ngircd.c,v 1.39 2002/03/29 22:56:40 alex Exp $ * * ngircd.c: Hier beginnt alles ;-) */ @@ -247,6 +247,23 @@ GLOBAL int main( int argc, const char *argv[] ) Client_Init( ); Conn_Init( ); + /* Wenn als root ausgefuehrt und eine andere UID + * konfiguriert ist, jetzt zu dieser wechseln */ + if( getuid( ) != 0 ) + { + if( Conf_GID > 0 ) + { + /* Neue Group-ID setzen */ + if( setgid( Conf_GID ) != 0 ) Log( LOG_ERR, "Can't change Group-ID to %u: %s", Conf_GID, strerror( errno )); + } + if( Conf_UID > 0 ) + { + /* Neue User-ID setzen */ + if( setgid( Conf_UID ) != 0 ) Log( LOG_ERR, "Can't change User-ID to %u: %s", Conf_UID, strerror( errno )); + } + } + Log( LOG_INFO, "Running as user %ld, group %ld.", (INT32)getuid( ), (INT32)getgid( )); + /* Signal-Handler initialisieren */ Initialize_Signal_Handler( ); @@ -268,11 +285,6 @@ GLOBAL int main( int argc, const char *argv[] ) Log_Exit( ); } -#ifndef DEBUG - /* aufraeumen */ - if( unlink( ERROR_FILE ) != 0 ) Log( LOG_ERR, "Can't delete \""ERROR_FILE"\": %s", strerror( errno )); -#endif - return 0; } /* main */ @@ -400,13 +412,13 @@ LOCAL VOID Initialize_Listen_Ports( VOID ) /* Ports, auf denen der Server Verbindungen entgegennehmen * soll, initialisieren */ - INT created, i; + UINT created, i; created = 0; for( i = 0; i < Conf_ListenPorts_Count; i++ ) { if( Conn_NewListener( Conf_ListenPorts[i] )) created++; - else Log( LOG_ERR, "Can't listen on port %d!", Conf_ListenPorts[i] ); + else Log( LOG_ERR, "Can't listen on port %u!", Conf_ListenPorts[i] ); } if( created < 1 )