about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2002-03-02 01:35:50 +0000
committerAlexander Barton <alex@barton.de>2002-03-02 01:35:50 +0000
commit7157d9365157d969c1f7db14e6bc67825d9fc14d (patch)
tree0be10149e78c6ab8b186215316f29b7c696003a1 /src
parent0370c4843f3a837460b1c2f2db520f9f57b5ce3e (diff)
downloadngircd-7157d9365157d969c1f7db14e6bc67825d9fc14d.tar.gz
ngircd-7157d9365157d969c1f7db14e6bc67825d9fc14d.zip
- Channel- und Nicknames werden nun ordentlich validiert.
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/channel.c15
-rw-r--r--src/ngircd/client.c19
2 files changed, 31 insertions, 3 deletions
diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c
index 23d807d9..5b125b0e 100644
--- 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
index cdb4f185..6b574763 100644
--- 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 */