mirror of
https://github.com/osmarks/ngircd.git
synced 2025-02-24 05:00:01 +00:00
Don't enforce MAX_HNDL_MODES_ARG on server and service links
This commit is contained in:
parent
39d630c00d
commit
78a3b4c7d6
@ -102,6 +102,27 @@ IRC_MODE( CLIENT *Client, REQUEST *Req )
|
||||
} /* IRC_MODE */
|
||||
|
||||
|
||||
/**
|
||||
* Check if the "mode limit" for a client has been reached.
|
||||
*
|
||||
* This limit doesn't apply for servers or services!
|
||||
*
|
||||
* @param Client The client to check.
|
||||
* @param Count The number of modes already handled.
|
||||
* @return true if the limit has been reached.
|
||||
*/
|
||||
static bool
|
||||
Mode_Limit_Reached(CLIENT *Client, int Count)
|
||||
{
|
||||
if (Client_Type(Client) == CLIENT_SERVER
|
||||
|| Client_Type(Client) == CLIENT_SERVICE)
|
||||
return false;
|
||||
if (Count < MAX_HNDL_MODES_ARG)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle client mode requests
|
||||
*
|
||||
@ -491,7 +512,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
||||
Client_ID(Origin), Channel_Name(Channel));
|
||||
break;
|
||||
case 'k': /* Channel key */
|
||||
if (mode_arg_count++ >= MAX_HNDL_MODES_ARG)
|
||||
if (Mode_Limit_Reached(Client, mode_arg_count++))
|
||||
goto chan_exit;
|
||||
if (!set) {
|
||||
if (modeok)
|
||||
@ -527,7 +548,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
||||
}
|
||||
break;
|
||||
case 'l': /* Member limit */
|
||||
if (mode_arg_count++ >= MAX_HNDL_MODES_ARG)
|
||||
if (Mode_Limit_Reached(Client, mode_arg_count++))
|
||||
goto chan_exit;
|
||||
if (!set) {
|
||||
if (modeok)
|
||||
@ -639,7 +660,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
||||
/* --- Channel lists --- */
|
||||
case 'I': /* Invite lists */
|
||||
case 'b': /* Ban lists */
|
||||
if (mode_arg_count++ >= MAX_HNDL_MODES_ARG)
|
||||
if (Mode_Limit_Reached(Client, mode_arg_count++))
|
||||
goto chan_exit;
|
||||
if (arg_arg > mode_arg) {
|
||||
/* modify list */
|
||||
|
Loading…
x
Reference in New Issue
Block a user