repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 888664435aa81f20b204e2f9629678b606697bc5:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 888664435aa81f20b204e2f9629678b606697bc5
Author: Alexander Barton 
Date:   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
index 9afe90780188ba1941874d9796427323af852816..
index ..7eb81cfad680b19732518c106c6ccceedbda4c40 100644
--- 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-----