repo: ngircd action: commit revision: path_from: revision_from: 1fa2af5b3a95cad24c3e8b56ee7e57aa5084bfdb: path_to: revision_to:
commit 1fa2af5b3a95cad24c3e8b56ee7e57aa5084bfdb Author: Alexander BartonDate: Fri Jan 6 17:24:55 2012 +0100 Fix handling of channel mode sequence with/without arguments For example, don't generate wrong error messages when handling "MODE #chan +IIIIItn *!aa@b *!bb@c *!cc@d *!dd@e *!ee@f". diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
--- a/src/ngircd/irc-mode.c
+++ b/src/ngircd/irc-mode.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -280,7 +280,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
/* Are there changed modes? */
if (the_modes[1]) {
- /* Remoce needless action modifier characters */
+ /* Remove needless action modifier characters */
len = strlen(the_modes) - 1;
if (the_modes[len] == '+' || the_modes[len] == '-')
the_modes[len] = '\0';
@@ -428,6 +428,8 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
mode_ptr++;
if (!*mode_ptr) {
/* Try next argument if there's any */
+ if (arg_arg < 0)
+ break;
if (arg_arg > mode_arg)
mode_arg = arg_arg;
else
-----END OF PAGE-----