1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-11-03 15:33:00 +00:00

Compare commits

..

12 Commits

Author SHA1 Message Date
Alexander Barton
bb180adb49 - Versionsnummer auf 0.5.3 angehoben. 2002-11-08 21:17:17 +00:00
Alexander Barton
e2c896cb7e - Dokumentation aktualisiert. 2002-11-08 21:17:03 +00:00
Alexander Barton
2c7b276cc5 - Dokumentation aktualisiert. 2002-11-04 20:03:38 +00:00
Alexander Barton
4decf352fa - Versionsnummer auf 0.5.3-pre1 angehoben. 2002-11-04 19:34:28 +00:00
Alexander Barton
19c2e79b72 - Code-Formatierung korrigiert: da waren Tabs wo keine hin gehoerten. 2002-11-04 19:27:23 +00:00
Alexander Barton
49d9585242 - "back-ports" aus CVS-HEAD fuer Version 0.5.3 2002-11-04 19:18:39 +00:00
Alexander Barton
9487976620 - Versionsnummer auf 0.5.3-pre1 angehoben. 2002-11-04 19:17:52 +00:00
Alexander Barton
35d1c2fc06 - fehlende $Id$-Tags ergaenzt. 2002-10-04 13:12:46 +00:00
Alexander Barton
c557a2920e - Versionsnummer auf 0.5.2 angehoben. 2002-10-04 12:47:14 +00:00
Alexander Barton
845b295e7d - Dokumentation aktualisiert. 2002-10-04 12:43:53 +00:00
Alexander Barton
59b5b0e025 - aus HEAD: der Buffer fuer das Prefix war zu klein. 2002-10-04 12:40:58 +00:00
Alexander Barton
bdd23ece63 - Backports aus HEAD: Format-String- und Buffer-Overflow-Bugs behoben,
die zum Abbruch des Servers fuehren konnten.
2002-10-04 11:31:28 +00:00
19 changed files with 177 additions and 124 deletions

View File

@@ -10,6 +10,26 @@
-- ChangeLog / Aenderungen --
ngIRCd 0.5.3, 08.11.2002
- NOTICE liefert nun wirklich nie mehr einen Fehler, auch dann nicht,
wenn der sendende Client noch gar nicht registriert ist.
- ein "schneller Server-Reconnect" wird nur noch dann versucht, wenn die
Verbindung zuvor ordentlich (="lange genug") in Ordnung war; somit also
nicht meht, wenn der Peer-Server gleich beim Connect ein ERROR liefert.
Das vermeidet "Connect-Orgien".
- einige Datentypen aufgeraumt: z.B. sind viele INT32s nun LONGs. Das ist
auf Platformen mit 8-Byte-Integern kompatibler.
- RPL_YOURHOST_MSG ist nun ircII- und RFC-kompatibel ;-)
- Segfault unter hoher Netzaktivitaet behoben: in Conn_Close() wird die
Connection-Struktur nun frueher als "ungueltig" markiert.
ngIRCd 0.5.2, 04.10.2002
- Buffer Overflow in Read_Resolver_Result() behoben.
- Format-String-Bugs, die zum Abbruch des Servers fuehrten, behoben.
- Maximale Laenge eines IRC-Prefix wurde falsch berechnet.
ngIRCd 0.5.1, 03.10.2002
- in RPL_YOURHOST_MSG wurde ein fehlerhafter Versionsstring geliefert.
@@ -278,4 +298,4 @@ ngIRCd 0.0.1, 31.12.2001
--
$Id: ChangeLog,v 1.87.2.9 2002/10/03 17:08:53 alex Exp $
$Id: ChangeLog,v 1.87.2.12 2002/11/08 21:17:03 alex Exp $

View 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.8 2002/11/08 21:17:17 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.3)
AM_CONFIG_HEADER(src/config.h)
# -- Templates fuer config.h --

View File

@@ -1,5 +1,5 @@
%define name ngircd
%define version 0.5.1
%define version 0.5.3
%define release 1
%define prefix %{_prefix}

View 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: channel.c,v 1.32 2002/09/03 23:57:57 alex Exp $
* $Id: channel.c,v 1.32.2.1 2002/11/04 19:18:39 alex Exp $
*
* channel.c: Management der Channels
*/
@@ -249,11 +249,11 @@ Channel_Quit( CLIENT *Client, CHAR *Reason )
} /* Channel_Quit */
GLOBAL INT
GLOBAL LONG
Channel_Count( VOID )
{
CHANNEL *c;
INT count;
LONG count;
count = 0;
c = My_Channels;
@@ -266,11 +266,11 @@ Channel_Count( VOID )
} /* Channel_Count */
GLOBAL INT
GLOBAL LONG
Channel_MemberCount( CHANNEL *Chan )
{
CL2CHAN *cl2chan;
INT count;
LONG count;
assert( Chan != NULL );

View 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: channel.h,v 1.21 2002/09/03 23:57:57 alex Exp $
* $Id: channel.h,v 1.21.2.1 2002/11/04 19:18:39 alex Exp $
*
* channel.h: Management der Channels (Header)
*/
@@ -59,8 +59,8 @@ GLOBAL VOID Channel_Quit PARAMS((CLIENT *Client, CHAR *Reason ));
GLOBAL VOID Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
GLOBAL INT Channel_Count PARAMS((VOID ));
GLOBAL INT Channel_MemberCount PARAMS((CHANNEL *Chan ));
GLOBAL LONG Channel_Count PARAMS((VOID ));
GLOBAL LONG Channel_MemberCount PARAMS((CHANNEL *Chan ));
GLOBAL CHAR *Channel_Name PARAMS((CHANNEL *Chan ));
GLOBAL CHAR *Channel_Modes PARAMS((CHANNEL *Chan ));

View 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: client.c,v 1.60 2002/09/03 18:54:31 alex Exp $
* $Id: client.c,v 1.60.2.2 2002/11/04 19:18:39 alex Exp $
*
* client.c: Management aller Clients
*
@@ -53,12 +53,15 @@
#include <exp.h>
#define GETID_LEN (CLIENT_NICK_LEN-1) + 1 + (CLIENT_USER_LEN-1) + 1 + (CLIENT_HOST_LEN-1) + 1
LOCAL CLIENT *This_Server, *My_Clients;
LOCAL CHAR GetID_Buffer[CLIENT_ID_LEN];
LOCAL CHAR GetID_Buffer[GETID_LEN];
LOCAL INT Count PARAMS(( CLIENT_TYPE Type ));
LOCAL INT MyCount PARAMS(( CLIENT_TYPE Type ));
LOCAL LONG Count PARAMS(( CLIENT_TYPE Type ));
LOCAL LONG MyCount PARAMS(( CLIENT_TYPE Type ));
LOCAL CLIENT *New_Client_Struct PARAMS(( VOID ));
LOCAL VOID Generate_MyToken PARAMS(( CLIENT *Client ));
@@ -713,7 +716,7 @@ Client_Mask( CLIENT *Client )
if( Client->type == CLIENT_SERVER ) return Client->id;
sprintf( GetID_Buffer, "%s!%s@%s", Client->id, Client->user, Client->host );
snprintf( GetID_Buffer, GETID_LEN, "%s!%s@%s", Client->id, Client->user, Client->host );
return GetID_Buffer;
} /* Client_Mask */
@@ -837,46 +840,46 @@ Client_Next( CLIENT *c )
} /* Client_Next */
GLOBAL INT
GLOBAL LONG
Client_UserCount( VOID )
{
return Count( CLIENT_USER );
} /* Client_UserCount */
GLOBAL INT
GLOBAL LONG
Client_ServiceCount( VOID )
{
return Count( CLIENT_SERVICE );;
} /* Client_ServiceCount */
GLOBAL INT
GLOBAL LONG
Client_ServerCount( VOID )
{
return Count( CLIENT_SERVER );
} /* Client_ServerCount */
GLOBAL INT
GLOBAL LONG
Client_MyUserCount( VOID )
{
return MyCount( CLIENT_USER );
} /* Client_MyUserCount */
GLOBAL INT
GLOBAL LONG
Client_MyServiceCount( VOID )
{
return MyCount( CLIENT_SERVICE );
} /* Client_MyServiceCount */
GLOBAL INT
GLOBAL LONG
Client_MyServerCount( VOID )
{
CLIENT *c;
INT cnt;
LONG cnt;
cnt = 0;
c = My_Clients;
@@ -889,11 +892,11 @@ Client_MyServerCount( VOID )
} /* Client_MyServerCount */
GLOBAL INT
GLOBAL LONG
Client_OperCount( VOID )
{
CLIENT *c;
INT cnt;
LONG cnt;
cnt = 0;
c = My_Clients;
@@ -906,11 +909,11 @@ Client_OperCount( VOID )
} /* Client_OperCount */
GLOBAL INT
GLOBAL LONG
Client_UnknownCount( VOID )
{
CLIENT *c;
INT cnt;
LONG cnt;
cnt = 0;
c = My_Clients;
@@ -950,11 +953,11 @@ Client_IsValidNick( CHAR *Nick )
} /* Client_IsValidNick */
LOCAL INT
LOCAL LONG
Count( CLIENT_TYPE Type )
{
CLIENT *c;
INT cnt;
LONG cnt;
cnt = 0;
c = My_Clients;
@@ -967,11 +970,11 @@ Count( CLIENT_TYPE Type )
} /* Count */
LOCAL INT
LOCAL LONG
MyCount( CLIENT_TYPE Type )
{
CLIENT *c;
INT cnt;
LONG cnt;
cnt = 0;
c = My_Clients;

View 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: client.h,v 1.29 2002/09/03 18:54:31 alex Exp $
* $Id: client.h,v 1.29.2.1 2002/11/04 19:18:39 alex Exp $
*
* client.h: Konfiguration des ngircd (Header)
*/
@@ -124,14 +124,14 @@ GLOBAL BOOLEAN Client_ModeDel PARAMS((CLIENT *Client, CHAR Mode ));
GLOBAL BOOLEAN Client_CheckNick PARAMS((CLIENT *Client, CHAR *Nick ));
GLOBAL BOOLEAN Client_CheckID PARAMS((CLIENT *Client, CHAR *ID ));
GLOBAL INT Client_UserCount PARAMS((VOID ));
GLOBAL INT Client_ServiceCount PARAMS((VOID ));
GLOBAL INT Client_ServerCount PARAMS((VOID ));
GLOBAL INT Client_OperCount PARAMS((VOID ));
GLOBAL INT Client_UnknownCount PARAMS((VOID ));
GLOBAL INT Client_MyUserCount PARAMS((VOID ));
GLOBAL INT Client_MyServiceCount PARAMS((VOID ));
GLOBAL INT Client_MyServerCount PARAMS((VOID ));
GLOBAL LONG Client_UserCount PARAMS((VOID ));
GLOBAL LONG Client_ServiceCount PARAMS((VOID ));
GLOBAL LONG Client_ServerCount PARAMS((VOID ));
GLOBAL LONG Client_OperCount PARAMS((VOID ));
GLOBAL LONG Client_UnknownCount PARAMS((VOID ));
GLOBAL LONG Client_MyUserCount PARAMS((VOID ));
GLOBAL LONG Client_MyServiceCount PARAMS((VOID ));
GLOBAL LONG Client_MyServerCount PARAMS((VOID ));
GLOBAL BOOLEAN Client_IsValidNick PARAMS((CHAR *Nick ));

View 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 $
* $Id: conf.c,v 1.29.2.4 2002/11/04 19:18:39 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( );
@@ -98,8 +98,8 @@ Conf_Test( VOID )
printf( "%u", Conf_ListenPorts[i] );
}
puts( "" );
printf( " ServerUID = %ld\n", (INT32)Conf_UID );
printf( " ServerGID = %ld\n", (INT32)Conf_GID );
printf( " ServerUID = %ld\n", (LONG)Conf_UID );
printf( " ServerGID = %ld\n", (LONG)Conf_GID );
printf( " PingTimeout = %d\n", Conf_PingTimeout );
printf( " PongTimeout = %d\n", Conf_PongTimeout );
printf( " ConnectRetry = %d\n", Conf_ConnectRetry );
@@ -295,7 +295,7 @@ LOCAL VOID
Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
{
CHAR *ptr;
INT32 port;
LONG port;
assert( Line > 0 );
assert( Var != NULL );
@@ -446,7 +446,7 @@ Handle_OPERATOR( INT Line, CHAR *Var, CHAR *Arg )
LOCAL VOID
Handle_SERVER( INT Line, CHAR *Var, CHAR *Arg )
{
INT32 port;
LONG port;
assert( Line > 0 );
assert( Var != NULL );
@@ -539,7 +539,7 @@ Validate_Config( VOID )
}
#ifdef STRICT_RFC
if( ! ConfAdminMail[0] )
if( ! Conf_ServerAdminMail[0] )
{
/* Keine Server-Information konfiguriert */
Config_Error( LOG_ALERT, "No administrator email address configured in \"%s\" ('AdminEMail')!", NGIRCd_ConfFile );
@@ -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 */

View 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 $
* $Id: conn.c,v 1.72.2.4 2002/11/04 19:18:39 alex Exp $
*
* connect.h: Verwaltung aller Netz-Verbindungen ("connections")
*/
@@ -235,7 +235,7 @@ Conn_Handler( VOID )
fd_set read_sockets, write_sockets;
struct timeval tv;
time_t start, t;
INT i;
INT i, idx;
start = time( NULL );
while(( ! NGIRCd_Quit ) && ( ! NGIRCd_Restart ))
@@ -317,7 +317,7 @@ Conn_Handler( VOID )
/* Fehler (z.B. Interrupt) */
if( errno != EINTR )
{
Log( LOG_EMERG, "select(): %s!", strerror( errno ));
Log( LOG_EMERG, "Conn_Handler(): select(): %s!", strerror( errno ));
Log( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE );
exit( 1 );
}
@@ -327,7 +327,18 @@ Conn_Handler( VOID )
/* Koennen Daten geschrieben werden? */
for( i = 0; i < Conn_MaxFD + 1; i++ )
{
if( FD_ISSET( i, &write_sockets )) Handle_Write( Socket2Index( i ));
if( ! FD_ISSET( i, &write_sockets )) continue;
/* Es kann geschrieben werden ... */
idx = Socket2Index( i );
if( idx == NONE ) continue;
if( ! Handle_Write( idx ))
{
/* Fehler beim Schreiben! Diesen Socket nun
* auch aus dem Read-Set entfernen: */
FD_CLR( i, &read_sockets );
}
}
/* Daten zum Lesen vorhanden? */
@@ -456,12 +467,17 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
if( close( My_Connections[Idx].sock ) != 0 )
{
Log( LOG_ERR, "Error closing connection %d with %s:%d - %s!", Idx, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port), strerror( errno ));
Log( LOG_ERR, "Error closing connection %d (socket %d) with %s:%d - %s!", Idx, My_Connections[Idx].sock, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port), strerror( errno ));
}
else
{
Log( LOG_INFO, "Connection %d with %s:%d closed.", Idx, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port ));
Log( LOG_INFO, "Connection %d (socket %d) with %s:%d closed.", Idx, My_Connections[Idx].sock, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port ));
}
/* Socket als "ungueltig" markieren */
FD_CLR( My_Connections[Idx].sock, &My_Sockets );
FD_CLR( My_Connections[Idx].sock, &My_Connects );
My_Connections[Idx].sock = NONE;
c = Client_GetFromConn( Idx );
if( c ) Client_Destroy( c, LogMsg, FwdMsg, TRUE );
@@ -475,18 +491,18 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
free( My_Connections[Idx].res_stat );
}
/* Bei Server-Verbindungen lasttry-Zeitpunkt so setzen, dass
* der naechste Verbindungsversuch in RECONNECT_DELAY Sekunden
* gestartet wird. */
if(( My_Connections[Idx].our_server >= 0 ) && ( Conf_Server[My_Connections[Idx].our_server].lasttry < time( NULL )))
/* Startzeit des naechsten Connect-Versuchs modifizieren? */
if(( My_Connections[Idx].our_server >= 0 ) && ( Conf_Server[My_Connections[Idx].our_server].lasttry < time( NULL ) - Conf_ConnectRetry ))
{
/* Okay, die Verbindung stand schon "genuegend lange" */
/* Okay, die Verbindung stand schon "genuegend lange":
* lasttry-Zeitpunkt so setzen, dass der naechste
* Verbindungsversuch in RECONNECT_DELAY Sekunden
* gestartet wird. */
Conf_Server[My_Connections[Idx].our_server].lasttry = time( NULL ) - Conf_ConnectRetry + RECONNECT_DELAY;
}
FD_CLR( My_Connections[Idx].sock, &My_Sockets );
FD_CLR( My_Connections[Idx].sock, &My_Connects );
My_Connections[Idx].sock = NONE;
/* Connection-Struktur loeschen (=freigeben) */
Init_Conn_Struct( Idx );
} /* Conn_Close */
@@ -557,7 +573,7 @@ Try_Write( CONN_ID Idx )
/* Fehler! */
if( errno != EINTR )
{
Log( LOG_ALERT, "select() failed: %s!", strerror( errno ));
Log( LOG_ALERT, "Try_Write(): select() failed: %s (con=%d, sock=%d)!", strerror( errno ), Idx, My_Connections[Idx].sock );
Conn_Close( Idx, "Server error!", NULL, FALSE );
return FALSE;
}
@@ -598,7 +614,7 @@ Handle_Read( INT Sock )
/* Ein Client Socket: entweder ein User oder Server */
idx = Socket2Index( Sock );
Read_Request( idx );
if( idx > NONE ) Read_Request( idx );
}
} /* Handle_Read */
@@ -610,7 +626,7 @@ Handle_Write( CONN_ID Idx )
INT len, res, err;
assert( Idx >= 0 );
assert( Idx > NONE );
assert( My_Connections[Idx].sock > NONE );
if( FD_ISSET( My_Connections[Idx].sock, &My_Connects ))
@@ -646,9 +662,7 @@ Handle_Write( CONN_ID Idx )
/* PASS und SERVER verschicken */
Conn_WriteStr( Idx, "PASS %s %s", Conf_Server[My_Connections[Idx].our_server].pwd, NGIRCd_ProtoID );
Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo );
return TRUE;
return Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo );
}
assert( My_Connections[Idx].wdatalen > 0 );
@@ -658,8 +672,8 @@ Handle_Write( CONN_ID Idx )
if( len < 0 )
{
/* Oops, ein Fehler! */
Log( LOG_ERR, "Write error (buffer) on connection %d: %s!", Idx, strerror( errno ));
Conn_Close( Idx, "Write error (buffer)!", NULL, FALSE );
Log( LOG_ERR, "Write error on connection %d (socket %d): %s!", Idx, My_Connections[Idx].sock, strerror( errno ));
Conn_Close( Idx, "Write error!", NULL, FALSE );
return FALSE;
}
@@ -693,7 +707,7 @@ New_Connection( INT Sock )
return;
}
/* Freie Connection-Struktur suschen */
/* Freie Connection-Struktur suchen */
for( idx = 0; idx < MAX_CONNECTIONS; idx++ ) if( My_Connections[idx].sock == NONE ) break;
if( idx >= MAX_CONNECTIONS )
{
@@ -752,8 +766,14 @@ Socket2Index( INT Sock )
for( idx = 0; idx < MAX_CONNECTIONS; idx++ ) if( My_Connections[idx].sock == Sock ) break;
assert( idx < MAX_CONNECTIONS );
return idx;
if( idx >= MAX_CONNECTIONS )
{
/* die Connection wurde vermutlich (wegen eines
* Fehlers) bereits wieder abgebaut ... */
Log( LOG_DEBUG, "Socket2Index: can't get connection for socket %d!", Sock );
return NONE;
}
else return idx;
} /* Socket2Index */
@@ -789,7 +809,7 @@ Read_Request( CONN_ID Idx )
if( len < 0 )
{
/* Fehler beim Lesen */
Log( LOG_ERR, "Read error on connection %d: %s!", Idx, strerror( errno ));
Log( LOG_ERR, "Read error on connection %d (socket %d): %s!", Idx, My_Connections[Idx].sock, strerror( errno ));
Conn_Close( Idx, "Read error!", "Client closed connection", FALSE );
return;
}
@@ -811,7 +831,10 @@ Handle_Buffer( CONN_ID Idx )
{
/* Daten im Lese-Puffer einer Verbindung verarbeiten. */
CHAR *ptr, *ptr1, *ptr2;
#ifndef STRICT_RFC
CHAR *ptr1, *ptr2;
#endif
CHAR *ptr;
INT len, delta;
/* Eine komplette Anfrage muss mit CR+LF enden, vgl.
@@ -1072,6 +1095,8 @@ New_Server( INT Server, CONN_ID Idx )
FD_SET( new_sock, &My_Sockets );
FD_SET( new_sock, &My_Connects );
if( new_sock > Conn_MaxFD ) Conn_MaxFD = new_sock;
Log( LOG_DEBUG, "Registered new connection %d on socket %d.", Idx, My_Connections[Idx].sock );
} /* New_Server */
@@ -1133,7 +1158,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 */
@@ -1151,7 +1176,7 @@ Read_Resolver_Result( INT r_fd )
if( i >= MAX_CONNECTIONS )
{
/* Opsa! Keine passende Connection gefunden!? Vermutlich
* wurde sie schon wieder geschlossen. */
* wurde sie schon wieder geschlossen. */
close( r_fd );
Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" );
return;

View 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 $
* $Id: irc-server.c,v 1.17.2.2 2002/10/04 13:12: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 */

View 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 $
* $Id: irc-write.c,v 1.7.2.3 2002/10/04 13:12:46 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 );
}

View 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 $
* $Id: irc.c,v 1.95.2.3 2002/11/04 19:18:39 alex Exp $
*
* irc.c: IRC-Befehle
*/
@@ -109,7 +109,7 @@ IRC_NOTICE( CLIENT *Client, REQUEST *Req )
assert( Client != NULL );
assert( Req != NULL );
if(( Client_Type( Client ) != CLIENT_USER ) && ( Client_Type( Client ) != CLIENT_SERVER )) return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client ));
if(( Client_Type( Client ) != CLIENT_USER ) && ( Client_Type( Client ) != CLIENT_SERVER )) return CONNECTED;
/* Falsche Anzahl Parameter? */
if( Req->argc != 2 ) return CONNECTED;
@@ -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;
@@ -834,7 +834,7 @@ IRC_Send_WHO( CLIENT *Client, CHANNEL *Chan, BOOLEAN OnlyOps )
GLOBAL BOOLEAN
IRC_Send_LUSERS( CLIENT *Client )
{
INT cnt;
LONG cnt;
assert( Client != NULL );

View 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 $
* $Id: lists.c,v 1.8.2.2 2002/10/04 13:12:46 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, '@' );

View 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 $
* $Id: log.c,v 1.37.2.3 2002/11/04 19:18:39 alex Exp $
*
* log.c: Logging-Funktionen
*/
@@ -96,7 +96,7 @@ Log_InitErrorfile( VOID )
* landen z.B. alle Ausgaben von assert()-Aufrufen. */
/* Dateiname zusammen bauen */
sprintf( Error_File, "%s/%s-%ld.err", ERROR_DIR, PACKAGE, (INT32)getpid( ));
sprintf( Error_File, "%s/%s-%ld.err", ERROR_DIR, PACKAGE, (LONG)getpid( ));
/* stderr umlenken */
fflush( stderr );
@@ -185,7 +185,7 @@ va_dcl
else
{
/* Syslog */
syslog( Level, msg );
syslog( Level, "%s", msg );
}
#endif

View 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: messages.h,v 1.46.2.1 2002/10/03 16:13:38 alex Exp $
* $Id: messages.h,v 1.46.2.3 2002/11/04 19:27:23 alex Exp $
*
* irc.h: IRC-Befehle (Header)
*/
@@ -20,15 +20,15 @@
#define RPL_WELCOME_MSG "001 %s :Welcome to the Internet Relay Network %s"
#define RPL_YOURHOST_MSG "002 %s :Your host is %s, running ngircd %s-%s/%s/%s"
#define RPL_YOURHOST_MSG "002 %s :Your host is %s, running version ngircd-%s (%s/%s/%s)"
#define RPL_CREATED_MSG "003 %s :This server has been started %s"
#define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s"
#define RPL_UMODEIS_MSG "211 %s +%s"
#define RPL_LUSERCLIENT_MSG "251 %s :There are %d users and %d services on %d servers"
#define RPL_LUSEROP_MSG "252 %s %d :operator(s) online"
#define RPL_LUSERUNKNOWN_MSG "253 %s %d :unknown connection(s)"
#define RPL_LUSERCHANNELS_MSG "254 %s %d :channels formed"
#define RPL_LUSERME_MSG "255 %s :I have %d users, %d services and %d servers"
#define RPL_LUSERCLIENT_MSG "251 %s :There are %ld users and %ld services on %ld servers"
#define RPL_LUSEROP_MSG "252 %s %ld :operator(s) online"
#define RPL_LUSERUNKNOWN_MSG "253 %s %ld :unknown connection(s)"
#define RPL_LUSERCHANNELS_MSG "254 %s %ld :channels formed"
#define RPL_LUSERME_MSG "255 %s :I have %ld users, %ld services and %ld servers"
#define RPL_ADMINME_MSG "256 %s %s :Administrative info"
#define RPL_ADMINLOC1_MSG "257 %s :%s"
#define RPL_ADMINLOC2_MSG "258 %s :%s"
@@ -46,7 +46,7 @@
#define RPL_WHOISIDLE_MSG "317 %s %s %ld :seconds idle"
#define RPL_ENDOFWHOIS_MSG "318 %s %s :End of WHOIS list"
#define RPL_WHOISCHANNELS_MSG "319 %s %s :"
#define RPL_LIST_MSG "322 %s %s %d :%s"
#define RPL_LIST_MSG "322 %s %s %ld :%s"
#define RPL_LISTEND_MSG "323 %s :End of LIST"
#define RPL_CHANNELMODEIS_MSG "324 %s %s +%s"
#define RPL_NOTOPIC_MSG "331 %s %s :No topic is set"

View 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 $
* $Id: ngircd.c,v 1.54.2.3 2002/11/04 19:18:39 alex Exp $
*
* ngircd.c: Hier beginnt alles ;-)
*/
@@ -58,7 +58,7 @@ GLOBAL int
main( int argc, const char *argv[] )
{
BOOLEAN ok, configtest = FALSE;
INT32 pid, n;
LONG pid, n;
INT i;
umask( 0077 );
@@ -140,7 +140,7 @@ main( int argc, const char *argv[] )
{
/* Kurze Option */
for( n = 1; n < (INT32)strlen( argv[i] ); n++ )
for( n = 1; n < (LONG)strlen( argv[i] ); n++ )
{
ok = FALSE;
#ifdef DEBUG
@@ -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 = (LONG)strlen( argv[i] );
ok = TRUE;
}
}
@@ -227,7 +227,7 @@ main( int argc, const char *argv[] )
if( ! NGIRCd_NoDaemon )
{
/* Daemon im Hintergrund erzeugen */
pid = (INT32)fork( );
pid = (LONG)fork( );
if( pid > 0 )
{
/* "alter" Prozess */
@@ -275,7 +275,7 @@ main( int argc, const char *argv[] )
if( setuid( Conf_UID ) != 0 ) Log( LOG_ERR, "Can't change User-ID to %u: %s", Conf_UID, strerror( errno ));
}
}
Log( LOG_INFO, "Running as user %ld, group %ld, with PID %ld.", (INT32)getuid( ), (INT32)getgid( ), (INT32)getpid( ));
Log( LOG_INFO, "Running as user %ld, group %ld, with PID %ld.", (LONG)getuid( ), (LONG)getgid( ), (LONG)getpid( ));
Log_InitErrorfile( );
@@ -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++ )

View 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 $
* $Id: parse.c,v 1.41.2.2 2002/10/04 13:12: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 );

View 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: portab.h,v 1.7 2002/06/26 15:43:38 alex Exp $
* $Id: portab.h,v 1.7.2.1 2002/11/04 19:18:39 alex Exp $
*
* portab.h: "Portabilitaets-Definitionen"
*/
@@ -56,6 +56,9 @@ typedef void POINTER;
typedef signed int INT;
typedef unsigned int UINT;
typedef signed long LONG;
typedef unsigned long ULONG;
typedef signed char INT8;
typedef unsigned char UINT8;
typedef signed short INT16;
@@ -63,6 +66,7 @@ typedef unsigned short UINT16;
typedef signed long INT32;
typedef unsigned long UINT32;
typedef double DOUBLE;
typedef float FLOAT;
typedef char CHAR;

View File

@@ -1,10 +1,11 @@
# $Id: ngircd-test.conf,v 1.2 2002/09/09 21:25:50 alex Exp $
# $Id: ngircd-test.conf,v 1.2.2.1 2002/11/04 19:18:39 alex Exp $
[Global]
Name = ngircd.test.server
Info = ngIRCd Test-Server
Ports = 6789
MotdFile = ngircd-test.motd
AdminEMail = admin@irc.server
[Operator]
Name = TestOp