repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 258143897ca1a4cbc8b97c9691a0cf83b963705a:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 258143897ca1a4cbc8b97c9691a0cf83b963705a
Author: Alexander Barton 
Date:   Tue Jul 22 13:18:19 2008 +0200

    Return 461 (syntax error) on "JOIN :" and "PART :"

    Up to this patch ngIRCd did not return any result (GIT master) or a badly
    formated 403 (":irc.server 403 test  :No such channel" [note the two
    spaces!], branch-0-12-x) on the above commands, this patch changes the
    behaviour to reflect ircd 2.11 which returns 461 in both cases.

diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c
index 030961f01381a0a6db7fffcbfdc9ca7770048b2e..
index ..f64570ad6483924c8a72fd08ac8b74088ebf31e7 100644
--- a/src/ngircd/irc-channel.c
+++ b/src/ngircd/irc-channel.c
@@ -214,6 +214,11 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 	channame = Req->argv[0];
 	channame = strtok_r(channame, ",", &lastchan);

+	/* Make sure that "channame" is not the empty string ("JOIN :") */
+	if (! channame)
+		return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+					  Client_ID(Client), Req->command);
+
 	while (channame) {
 		flags = NULL;

@@ -318,6 +323,12 @@ IRC_PART(CLIENT * Client, REQUEST * Req)

 	/* Loop over all the given channel names */
 	chan = strtok(Req->argv[0], ",");
+
+	/* Make sure that "chan" is not the empty string ("PART :") */
+	if (! chan)
+		return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+					  Client_ID(Client), Req->command);
+
 	while (chan) {
 		Channel_Part(target, Client, chan,
 			     Req->argc > 1 ? Req->argv[1] : Client_ID(target));

-----END OF PAGE-----