diff options
author | Adam <Adam@anope.org> | 2017-04-07 14:39:25 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2017-04-07 14:39:25 -0400 |
commit | c2c8f703b44f7712ea308d8f1f3a4e8c9bcb30c7 (patch) | |
tree | 6d5d9da63198b08a8a1bffecd74540192ede137c /modules | |
parent | af48ee6c87ab10a7ffe25d93e2bca688a0c656b0 (diff) | |
parent | dba19d839af717a697ed54ed5da9c27aef76052a (diff) |
Merge commit 'dba19d839af717a697ed54ed5da9c27aef76052a'
Diffstat (limited to 'modules')
-rw-r--r-- | modules/chanserv/access.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/modules/chanserv/access.cpp b/modules/chanserv/access.cpp index 8342e5973..70db18fad 100644 --- a/modules/chanserv/access.cpp +++ b/modules/chanserv/access.cpp @@ -899,6 +899,19 @@ class CSAccess : public Module { if (group->ci == NULL) return EVENT_CONTINUE; + + const ChanServ::ChanAccess *highest = group->Highest(); + if (highest && highest->provider == &accesschanaccesstype) + { + /* Access is the only access provider with the concept of negative access, + * so check they don't have negative access + */ + const AccessChanAccess *aca = anope_dynamic_static_cast<const AccessChanAccess *>(highest); + + if (aca->GetLevel() < 0) + return EVENT_CONTINUE; + } + /* Special case. Allows a level of -1 to match anyone, and a level of 0 to match anyone identified. */ int16_t level = group->ci->GetLevel(priv); if (level == -1) |