repo: ngircd action: commit revision: path_from: revision_from: 888664435aa81f20b204e2f9629678b606697bc5: path_to: revision_to:
commit 888664435aa81f20b204e2f9629678b606697bc5 Author: Alexander BartonDate: Fri Jan 6 17:42:52 2012 +0100 Channel modes: really break handling when MAX_CMODES_ARG is hit This fixes 98493077. 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
@@ -492,7 +492,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
break;
case 'k': /* Channel key */
if (mode_arg_count++ >= MAX_CMODES_ARG)
- break;
+ goto chan_exit;
if (!set) {
if (modeok)
x[0] = *mode_ptr;
@@ -528,7 +528,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
break;
case 'l': /* Member limit */
if (mode_arg_count++ >= MAX_CMODES_ARG)
- break;
+ goto chan_exit;
if (!set) {
if (modeok)
x[0] = *mode_ptr;
@@ -640,7 +640,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
case 'I': /* Invite lists */
case 'b': /* Ban lists */
if (mode_arg_count++ >= MAX_CMODES_ARG)
- break;
+ goto chan_exit;
if (arg_arg > mode_arg) {
/* modify list */
if (modeok) {
-----END OF PAGE-----