]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/client.c
SECURITY: Fixed a message handling bug which could crash the daemon.
[ngircd-alex.git] / src / ngircd / client.c
index 1e35fd81dc64994cfd7694e8d756d5a954352850..1b72adc8bb92a49db74855f611d94ed873545f80 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: client.c,v 1.95 2007/01/23 16:07:19 alex Exp $";
+static char UNUSED id[] = "$Id: client.c,v 1.98 2008/04/04 19:30:01 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -55,6 +55,7 @@ static char GetID_Buffer[GETID_LEN];
 
 static WHOWAS My_Whowas[MAX_WHOWAS];
 static int Last_Whowas = -1;
+static long Max_Users, My_Max_Users;
 
 
 static unsigned long Count PARAMS(( CLIENT_TYPE Type ));
@@ -69,9 +70,6 @@ static CLIENT *Init_New_Client PARAMS((CONN_ID Idx, CLIENT *Introducer,
  char *Info, int Hops, int Token, char *Modes, bool Idented));
 
 
-long Max_Users = 0, My_Max_Users = 0;
-
-
 GLOBAL void
 Client_Init( void )
 {
@@ -94,9 +92,10 @@ Client_Init( void )
        This_Server->hops = 0;
 
        gethostname( This_Server->host, CLIENT_HOST_LEN );
-       h = gethostbyname( This_Server->host );
-       if( h ) strlcpy( This_Server->host, h->h_name, sizeof( This_Server->host ));
-
+       if (!Conf_NoDNS) {
+               h = gethostbyname( This_Server->host );
+               if (h) strlcpy(This_Server->host, h->h_name, sizeof(This_Server->host));
+       }
        Client_SetID( This_Server, Conf_ServerName );
        Client_SetInfo( This_Server, Conf_ServerInfo );
 
@@ -531,7 +530,7 @@ Client_ModeDel( CLIENT *Client, char Mode )
 
 
 GLOBAL CLIENT *
-Client_Search( char *Nick )
+Client_Search( const char *Nick )
 {
        /* return Client-Structure that has the corresponding Nick.
         * If none is found, return NULL.
@@ -608,7 +607,8 @@ Client_ID( CLIENT *Client )
        assert( Client != NULL );
 
 #ifdef DEBUG
-       if( Client->type == CLIENT_USER ) assert( strlen( Client->id ) < CLIENT_NICK_LEN );
+       if(Client->type == CLIENT_USER)
+               assert(strlen(Client->id) < Conf_MaxNickLength);
 #endif
                                                   
        if( Client->id[0] ) return Client->id;
@@ -951,7 +951,7 @@ Client_IsValidNick( const char *Nick )
 
        if( Nick[0] == '#' ) return false;
        if( strchr( goodchars, Nick[0] )) return false;
-       if( strlen( Nick ) >= CLIENT_NICK_LEN ) return false;
+       if( strlen( Nick ) >= Conf_MaxNickLength) return false;
 
        ptr = Nick;
        while( *ptr )