mirror of
https://github.com/osmarks/ngircd.git
synced 2025-11-06 16:53:00 +00:00
Channel Admins are not allowed to set Channel Owner status!
This was reported back in April 2021, thanks Sarah!
Subject: NGIRCD bug report
Date: April 28 2021, 14:30:08 MESZ
To: alex@barton.de
Hello,
I am writing to you to report a bug in ngircd.
In any give channel, if an user is with mode +a (admin), he/she can
sets mode +/-q(owner) to any other user. This is not inline with the
documentation.
I've looked into the code irc-mode.c, apparently an if block is
missing. Below are the code snippets that I believe fixes the bug.
This patch is what Sarah sent in. Thanks a lot!
This commit is contained in:
@@ -740,6 +740,13 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
|||||||
break;
|
break;
|
||||||
/* --- Channel user modes --- */
|
/* --- Channel user modes --- */
|
||||||
case 'q': /* Owner */
|
case 'q': /* Owner */
|
||||||
|
if(!is_oper && !is_machine && !is_owner) {
|
||||||
|
connected = IRC_WriteErrClient(Origin,
|
||||||
|
ERR_CHANOPPRIVTOOLOW_MSG,
|
||||||
|
Client_ID(Origin),
|
||||||
|
Channel_Name(Channel));
|
||||||
|
goto chan_exit;
|
||||||
|
}
|
||||||
case 'a': /* Channel admin */
|
case 'a': /* Channel admin */
|
||||||
if(!is_oper && !is_machine && !is_owner && !is_admin) {
|
if(!is_oper && !is_machine && !is_owner && !is_admin) {
|
||||||
connected = IRC_WriteErrClient(Origin,
|
connected = IRC_WriteErrClient(Origin,
|
||||||
|
|||||||
Reference in New Issue
Block a user