repo: ngircd action: commit revision: path_from: revision_from: 7157d9365157d969c1f7db14e6bc67825d9fc14d: path_to: revision_to:
commit 7157d9365157d969c1f7db14e6bc67825d9fc14d Author: Alexander BartonDate: Sat Mar 2 01:35:50 2002 +0000 - Channel- und Nicknames werden nun ordentlich validiert. diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c
--- a/src/ngircd/channel.c
+++ b/src/ngircd/channel.c
@@ -9,11 +9,14 @@
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
*
- * $Id: channel.c,v 1.16 2002/02/27 23:23:53 alex Exp $
+ * $Id: channel.c,v 1.17 2002/03/02 01:35:50 alex Exp $
*
* channel.c: Management der Channels
*
* $Log: channel.c,v $
+ * Revision 1.17 2002/03/02 01:35:50 alex
+ * - Channel- und Nicknames werden nun ordentlich validiert.
+ *
* Revision 1.16 2002/02/27 23:23:53 alex
* - Includes fuer einige Header bereinigt.
*
@@ -317,10 +320,20 @@ GLOBAL CHANNEL *Channel_GetChannel( CL2CHAN *Cl2Chan )
GLOBAL BOOLEAN Channel_IsValidName( CHAR *Name )
{
/* Pr�fen, ob Name als Channelname gueltig */
+
+ CHAR *ptr, badchars[] = " ,:\x07";
assert( Name != NULL );
if(( Name[0] != '#' ) || ( strlen( Name ) >= CHANNEL_NAME_LEN )) return FALSE;
+
+ ptr = Name;
+ while( *ptr )
+ {
+ if( strchr( badchars, *ptr )) return FALSE;
+ ptr++;
+ }
+
return TRUE;
} /* Channel_IsValidName */
diff --git a/src/ngircd/client.c b/src/ngircd/client.c
--- a/src/ngircd/client.c
+++ b/src/ngircd/client.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: client.c,v 1.40 2002/02/27 23:23:53 alex Exp $
+ * $Id: client.c,v 1.41 2002/03/02 01:35:50 alex Exp $
*
* client.c: Management aller Clients
*
@@ -21,6 +21,9 @@
* Server gewesen, so existiert eine entsprechende CONNECTION-Struktur.
*
* $Log: client.c,v $
+ * Revision 1.41 2002/03/02 01:35:50 alex
+ * - Channel- und Nicknames werden nun ordentlich validiert.
+ *
* Revision 1.40 2002/02/27 23:23:53 alex
* - Includes fuer einige Header bereinigt.
*
@@ -947,11 +950,23 @@ GLOBAL INT Client_UnknownCount( VOID )
GLOBAL BOOLEAN Client_IsValidNick( CHAR *Nick )
{
/* Ist der Nick gueltig? */
+
+ CHAR *ptr, goodchars[] = ";0123456789";
assert( Nick != NULL );
if( Nick[0] == '#' ) return FALSE;
- if( strlen( Nick ) > CLIENT_NICK_LEN ) return FALSE;
+ if( strchr( goodchars, Nick[0] )) return FALSE;
+ if( strlen( Nick ) >= CLIENT_NICK_LEN ) return FALSE;
+
+ ptr = Nick;
+ while( *ptr )
+ {
+ if(( *ptr < 'A' ) && ( ! strchr( goodchars, *ptr ))) return FALSE;
+ if(( *ptr > '}' ) && ( ! strchr( goodchars, *ptr ))) return FALSE;
+ ptr++;
+ }
+
return TRUE;
} /* Client_IsValidNick */
-----END OF PAGE-----