mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-21 04:46:52 +00:00
IRC_PART could reference invalid memory.
This commit is contained in:
parent
7548aa089c
commit
463c5cb7c5
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
ngIRCd HEAD
|
ngIRCd HEAD
|
||||||
|
|
||||||
|
- SECURITY: IRC_PART could reference invalid memory, causing
|
||||||
|
ngircd to crash.
|
||||||
- Use dotted-decimal IP address if hostname is >= 64.
|
- Use dotted-decimal IP address if hostname is >= 64.
|
||||||
- Add support for /STAT u (server uptime) command.
|
- Add support for /STAT u (server uptime) command.
|
||||||
- New [Server] configuration Option "Bind" allows to specify
|
- New [Server] configuration Option "Bind" allows to specify
|
||||||
@ -724,4 +726,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: ChangeLog,v 1.332 2008/01/02 11:31:48 alex Exp $
|
$Id: ChangeLog,v 1.333 2008/01/07 11:42:00 fw Exp $
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-channel.c,v 1.40 2007/07/31 18:56:14 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-channel.c,v 1.41 2008/01/07 11:42:00 fw Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -269,8 +269,9 @@ IRC_PART( CLIENT *Client, REQUEST *Req )
|
|||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
/* Falsche Anzahl Parameter? */
|
if (Req->argc < 1 || Req->argc > 2)
|
||||||
if(( Req->argc > 2 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
|
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
/* Wer ist der Absender? */
|
/* Wer ist der Absender? */
|
||||||
if( Client_Type( Client ) == CLIENT_SERVER ) target = Client_Search( Req->prefix );
|
if( Client_Type( Client ) == CLIENT_SERVER ) target = Client_Search( Req->prefix );
|
||||||
@ -278,18 +279,11 @@ IRC_PART( CLIENT *Client, REQUEST *Req )
|
|||||||
if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
|
if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
|
||||||
|
|
||||||
/* Channel-Namen durchgehen */
|
/* Channel-Namen durchgehen */
|
||||||
chan = strtok( Req->argv[0], "," );
|
chan = strtok(Req->argv[0], ",");
|
||||||
while( chan )
|
while (chan) {
|
||||||
{
|
Channel_Part(target, Client, chan, Req->argc > 1 ? Req->argv[1] : Client_ID(target));
|
||||||
if( ! Channel_Part( target, Client, chan, Req->argc > 1 ? Req->argv[1] : Client_ID( target )))
|
|
||||||
{
|
|
||||||
/* naechsten Namen ermitteln */
|
|
||||||
chan = strtok( NULL, "," );
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* naechsten Namen ermitteln */
|
chan = strtok(NULL, ",");
|
||||||
chan = strtok( NULL, "," );
|
|
||||||
}
|
}
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* IRC_PART */
|
} /* IRC_PART */
|
||||||
|
Loading…
Reference in New Issue
Block a user