commit 258143897ca1a4cbc8b97c9691a0cf83b963705a from: Alexander Barton date: Tue Jul 22 11:18:19 2008 UTC 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. commit - 477f2fd9e719d757ff3d6f3515f845c37e13e354 commit + 258143897ca1a4cbc8b97c9691a0cf83b963705a blob - 030961f01381a0a6db7fffcbfdc9ca7770048b2e blob + f64570ad6483924c8a72fd08ac8b74088ebf31e7 --- src/ngircd/irc-channel.c +++ 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));