]> arthur.barton.de Git - ngircd.git/commitdiff
- Backports aus HEAD: Format-String- und Buffer-Overflow-Bugs behoben,
authorAlexander Barton <alex@barton.de>
Fri, 4 Oct 2002 11:31:28 +0000 (11:31 +0000)
committerAlexander Barton <alex@barton.de>
Fri, 4 Oct 2002 11:31:28 +0000 (11:31 +0000)
  die zum Abbruch des Servers fuehren konnten.

configure.in
src/ngircd/conf.c
src/ngircd/conn.c
src/ngircd/irc-server.c
src/ngircd/irc-write.c
src/ngircd/irc.c
src/ngircd/lists.c
src/ngircd/log.c
src/ngircd/ngircd.c
src/ngircd/parse.c

index bc595e310a11b45bc124f5c6d28afd0a53dab64e..9433a6ba7b4de4d0a8ad28e4a18aa4f8ad1773c3 100644 (file)
@@ -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: configure.in,v 1.58.2.4 2002/10/03 16:10:25 alex Exp $
+# $Id: configure.in,v 1.58.2.5 2002/10/04 11:31:28 alex Exp $
 #
 
 # -- Initialisierung --
@@ -18,7 +18,7 @@ AC_INIT
 AC_PREREQ(2.50)
 AC_CANONICAL_TARGET
 AC_CONFIG_SRCDIR(src/config.h.in)
-AM_INIT_AUTOMAKE(ngircd,0.5.1)
+AM_INIT_AUTOMAKE(ngircd,0.5.CVS)
 AM_CONFIG_HEADER(src/config.h)
 
 # -- Templates fuer config.h --
index bc19a754ccf7018fd12e3941e888c903c2c768e2..a546300681b50f7c546a8fa5ca53ca58706a423c 100644 (file)
@@ -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: conf.c,v 1.29.2.1 2002/09/19 10:17:50 alex Exp $
+ * conf.c,v 1.29.2.1 2002/09/19 10:17:50 alex Exp
  *
  * conf.h: Konfiguration des ngircd
  */
@@ -67,7 +67,7 @@ Conf_Test( VOID )
 {
        /* Konfiguration einlesen, ueberpruefen und ausgeben. */
 
-       UINT i;
+       INT i;
 
        Use_Log = FALSE;
        Set_Defaults( );
@@ -584,7 +584,7 @@ va_dcl
        /* Im "normalen Betrieb" soll der Log-Mechanismus des ngIRCd verwendet
         * werden, beim Testen der Konfiguration jedoch nicht, hier sollen alle
         * Meldungen direkt auf die Konsole ausgegeben werden: */
-       if( Use_Log ) Log( Level, msg );
+       if( Use_Log ) Log( Level, "%s", msg );
        else puts( msg );
 } /* Config_Error */
 
index 3d2ed09dc5d45003bd5af30ceb9f34d34cea6010..95fe17ec9a33b44d1676beeb69d06698a792bdf6 100644 (file)
@@ -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: conn.c,v 1.72.2.1 2002/10/03 16:13:38 alex Exp $
+ * conn.c,v 1.72.2.1 2002/10/03 16:13:38 alex Exp
  *
  * connect.h: Verwaltung aller Netz-Verbindungen ("connections")
  */
@@ -1133,7 +1133,7 @@ Read_Resolver_Result( INT r_fd )
        FD_CLR( r_fd, &Resolver_FDs );
 
        /* Anfrage vom Parent lesen */
-       len = read( r_fd, result, HOST_LEN);
+       len = read( r_fd, result, HOST_LEN - 1 );
        if( len < 0 )
        {
                /* Fehler beim Lesen aus der Pipe */
index 64c915378e979cd485a71276091c19490088a9f0..c572eb420813e7b8a3e9572fbc12f8cf22db610b 100644 (file)
@@ -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: irc-server.c,v 1.17 2002/09/07 17:57:31 alex Exp $
+ * irc-server.c,v 1.18 2002/10/04 11:21:46 alex Exp
  *
  * irc-server.c: IRC-Befehle fuer Server-Links
  */
@@ -188,7 +188,7 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                                if( strlen( str ) > ( LINE_LEN - CLIENT_NICK_LEN - 8 ))
                                {
                                        /* Zeile senden */
-                                       if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+                                       if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
                                        sprintf( str, "NJOIN %s :", Channel_Name( chan ));
                                }
                                
@@ -199,7 +199,7 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                        if( str[strlen( str ) - 1] != ':')
                        {
                                /* Ja; Also senden ... */
-                               if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+                               if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
                        }
 
                        /* naechsten Channel suchen */
index 6101927c4292a3e07bc16d7e80a227d4568c5eff..30183667cc313f1a641b2fb68e67a7bd2d3f8376 100644 (file)
@@ -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: irc-write.c,v 1.7.2.1 2002/09/17 17:29:20 alex Exp $
+ * irc-write.c,v 1.7.2.1 2002/09/17 17:29:20 alex Exp
  *
  * irc-write.c: IRC-Texte und Befehle ueber Netzwerk versenden
  */
@@ -62,7 +62,7 @@ va_dcl
        va_end( ap );
 
        /* an den Client selber */
-       ok = IRC_WriteStrClientPrefix( Client, Client_ThisServer( ), buffer );
+       ok = IRC_WriteStrClientPrefix( Client, Client_ThisServer( ), "%s", buffer );
 
        return ok;
 } /* IRC_WriteStrClient */
@@ -128,7 +128,7 @@ va_dcl
        vsnprintf( buffer, 1000, Format, ap );
        va_end( ap );
 
-       return IRC_WriteStrChannelPrefix( Client, Chan, Client_ThisServer( ), Remote, buffer );
+       return IRC_WriteStrChannelPrefix( Client, Chan, Client_ThisServer( ), Remote, "%s", buffer );
 } /* IRC_WriteStrChannel */
 
 
@@ -233,7 +233,7 @@ va_dcl
        va_end( ap );
 
        /* an den Client selber */
-       IRC_WriteStrServersPrefix( ExceptOf, Client_ThisServer( ), buffer );
+       IRC_WriteStrServersPrefix( ExceptOf, Client_ThisServer( ), "%s", buffer );
 } /* IRC_WriteStrServers */
 
 
@@ -263,7 +263,7 @@ va_dcl
        vsnprintf( buffer, 1000, Format, ap );
        va_end( ap );
 
-       IRC_WriteStrServersPrefixFlag( ExceptOf, Prefix, '\0', buffer );
+       IRC_WriteStrServersPrefixFlag( ExceptOf, Prefix, '\0', "%s", buffer );
 } /* IRC_WriteStrServersPrefix */
        
 
@@ -301,7 +301,7 @@ va_dcl
                if(( Client_Type( c ) == CLIENT_SERVER ) && ( Client_Conn( c ) > NONE ) && ( c != Client_ThisServer( )) && ( c != ExceptOf ))
                {
                        /* Ziel-Server gefunden. Nun noch pruefen, ob Flags stimmen */
-                       if(( Flag == '\0' ) || ( strchr( Client_Flags( c ), Flag ) != NULL )) IRC_WriteStrClientPrefix( c, Prefix, buffer );
+                       if(( Flag == '\0' ) || ( strchr( Client_Flags( c ), Flag ) != NULL )) IRC_WriteStrClientPrefix( c, Prefix, "%s", buffer );
                }
                c = Client_Next( c );
        }
index 402cfead579d5c2e3c5601ec1cff3c3c0e677e53..48b59b329673c77c7648846f2e2dc29a679cb60c 100644 (file)
@@ -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: irc.c,v 1.95 2002/09/16 09:14:45 alex Exp $
+ * irc.c,v 1.96 2002/10/04 11:21:46 alex Exp
  *
  * irc.c: IRC-Befehle
  */
@@ -206,7 +206,7 @@ IRC_NAMES( CLIENT *Client, REQUEST *Req )
                        if( strlen( rpl ) > ( LINE_LEN - CLIENT_NICK_LEN - 4 ))
                        {
                                /* Zeile wird zu lang: senden! */
-                               if( ! IRC_WriteStrClient( from, rpl )) return DISCONNECTED;
+                               if( ! IRC_WriteStrClient( from, "%s", rpl )) return DISCONNECTED;
                                sprintf( rpl, RPL_NAMREPLY_MSG, Client_ID( from ), "*", "*" );
                        }
                }
@@ -217,7 +217,7 @@ IRC_NAMES( CLIENT *Client, REQUEST *Req )
        if( rpl[strlen( rpl ) - 1] != ':')
        {
                /* es wurden User gefunden */
-               if( ! IRC_WriteStrClient( from, rpl )) return DISCONNECTED;
+               if( ! IRC_WriteStrClient( from, "%s", rpl )) return DISCONNECTED;
        }
        
        return IRC_WriteStrClient( from, RPL_ENDOFNAMES_MSG, Client_ID( from ), "*" );
@@ -259,7 +259,7 @@ IRC_ISON( CLIENT *Client, REQUEST *Req )
        }
        if( rpl[strlen( rpl ) - 1] == ' ' ) rpl[strlen( rpl ) - 1] = '\0';
 
-       return IRC_WriteStrClient( Client, rpl, Client_ID( Client ) );
+       return IRC_WriteStrClient( Client, "%s", rpl, Client_ID( Client ) );
 } /* IRC_ISON */
 
 
@@ -325,7 +325,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                if( strlen( str ) > ( LINE_LEN - CHANNEL_NAME_LEN - 4 ))
                {
                        /* Zeile wird zu lang: senden! */
-                       if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+                       if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
                        sprintf( str, RPL_WHOISCHANNELS_MSG, Client_ID( from ), Client_ID( c ));
                }
 
@@ -335,7 +335,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
        if( str[strlen( str ) - 1] != ':')
        {
                /* Es sind noch Daten da, die gesendet werden muessen */
-               if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+               if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
        }
        
        /* IRC-Operator? */
@@ -477,7 +477,7 @@ IRC_USERHOST( CLIENT *Client, REQUEST *Req )
        }
        if( rpl[strlen( rpl ) - 1] == ' ' ) rpl[strlen( rpl ) - 1] = '\0';
 
-       return IRC_WriteStrClient( Client, rpl, Client_ID( Client ) );
+       return IRC_WriteStrClient( Client, "%s", rpl, Client_ID( Client ) );
 } /* IRC_USERHOST */
 
 
@@ -768,7 +768,7 @@ IRC_Send_NAMES( CLIENT *Client, CHANNEL *Chan )
                        if( strlen( str ) > ( LINE_LEN - CLIENT_NICK_LEN - 4 ))
                        {
                                /* Zeile wird zu lang: senden! */
-                               if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+                               if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
                                sprintf( str, RPL_NAMREPLY_MSG, Client_ID( Client ), "=", Channel_Name( Chan ));
                        }
                }
@@ -779,7 +779,7 @@ IRC_Send_NAMES( CLIENT *Client, CHANNEL *Chan )
        if( str[strlen( str ) - 1] != ':')
        {
                /* Es sind noch Daten da, die gesendet werden muessen */
-               if( ! IRC_WriteStrClient( Client, str )) return DISCONNECTED;
+               if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
        }
 
        return CONNECTED;
index f8f29822ef22773b22e8e7efce6fb6dc71521752..7cd44085f86c74839952c6e90ee309fc1825cd6e 100644 (file)
@@ -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: lists.c,v 1.8 2002/09/08 17:06:07 alex Exp $
+ * lists.c,v 1.9 2002/10/03 21:49:59 alex Exp
  *
  * lists.c: Verwaltung der "IRC-Listen": Ban, Invite, ...
  */
@@ -317,13 +317,13 @@ GLOBAL CHAR *
 Lists_MakeMask( CHAR *Pattern )
 {
        /* Hier wird aus einem "beliebigen" Pattern eine gueltige IRC-Mask erzeugt.
-       * Diese ist aber nur bis zum naechsten Aufruf von Lists_MakeMask() gueltig,
-       * da ein einziger globaler Puffer verwendet wird. ->Umkopieren!*/
+        * Diese ist aber nur bis zum naechsten Aufruf von Lists_MakeMask() gueltig,
+        * da ein einziger globaler Puffer verwendet wird. ->Umkopieren!*/
 
        STATIC CHAR TheMask[MASK_LEN];
        CHAR *excl, *at;
 
-       assert( Pattern );
+       assert( Pattern != NULL );
 
        excl = strchr( Pattern, '!' );
        at = strchr( Pattern, '@' );
index cf52acce7473a68eb27e433628f990f6cec8a109..3eb4569f603b03600174678604845b7541e3bcbf 100644 (file)
@@ -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: log.c,v 1.37 2002/09/09 22:55:21 alex Exp $
+ * log.c,v 1.38 2002/10/04 11:21:46 alex Exp
  *
  * log.c: Logging-Funktionen
  */
@@ -185,7 +185,7 @@ va_dcl
        else
        {
                /* Syslog */
-               syslog( Level, msg );
+               syslog( Level, "%s", msg );
        }
 #endif
 
index a96646cfb4744d3925b692d9484302125f9cb343..4c41303d592d162e6dee77ba1ff1253a67230a7f 100644 (file)
@@ -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.54 2002/09/07 17:57:17 alex Exp $
+ * ngircd.c,v 1.55 2002/10/03 21:49:59 alex Exp
  *
  * ngircd.c: Hier beginnt alles ;-)
  */
@@ -159,7 +159,7 @@ main( int argc, const char *argv[] )
                                                NGIRCd_ConfFile[FNAME_LEN - 1] = '\0';
 
                                                /* zum uebernaechsten Parameter */
-                                               i++; n = strlen( argv[i] );
+                                               i++; n = (INT32)strlen( argv[i] );
                                                ok = TRUE;
                                        }
                                }
@@ -451,7 +451,7 @@ Initialize_Listen_Ports( VOID )
        /* Ports, auf denen der Server Verbindungen entgegennehmen
         * soll, initialisieren */
        
-       UINT created, i;
+       INT created, i;
 
        created = 0;
        for( i = 0; i < Conf_ListenPorts_Count; i++ )
index 6d1efef660a00ddc6cdc9168440bf71c3f7b2a90..e7c2954fc878b9cde9a6e8b14f67bb687efbaef5 100644 (file)
@@ -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: parse.c,v 1.41 2002/09/16 09:20:27 alex Exp $
+ * parse.c,v 1.42 2002/10/04 11:21:46 alex Exp
  *
  * parse.c: Parsen der Client-Anfragen
  */
@@ -311,7 +311,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
                        else strcat( str, " :" );
                        strcat( str, Req->argv[i] );
                }
-               return IRC_WriteStrClientPrefix( target, prefix, str );
+               return IRC_WriteStrClientPrefix( target, prefix, "%s", str );
        }
 
        if( strcasecmp( Req->command, "PASS" ) == 0 ) return IRC_PASS( client, Req );