diff options
| author | Alexander Barton <alex@barton.de> | 2002-03-02 01:35:50 +0000 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2002-03-02 01:35:50 +0000 |
| commit | 7157d9365157d969c1f7db14e6bc67825d9fc14d (patch) | |
| tree | 0be10149e78c6ab8b186215316f29b7c696003a1 /src | |
| parent | 0370c4843f3a837460b1c2f2db520f9f57b5ce3e (diff) | |
| download | ngircd-7157d9365157d969c1f7db14e6bc67825d9fc14d.tar.gz ngircd-7157d9365157d969c1f7db14e6bc67825d9fc14d.zip | |
- Channel- und Nicknames werden nun ordentlich validiert.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/channel.c | 15 | ||||
| -rw-r--r-- | src/ngircd/client.c | 19 |
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 */ |