diff options
author | genius3000 <genius3000@g3k.solutions> | 2018-03-26 05:57:22 -0600 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2018-04-06 22:29:42 +0100 |
commit | 3203d698ae8b2e69043ad3940e739b6bd1eb80e8 (patch) | |
tree | fa7450c929bdf21387a7623a465c926973ad5d91 | |
parent | 1cc4cf341c6c8c1288fb25678bd36678d6a205a5 (diff) |
Fix ELine::Matches returning false on existing match
When checking for an E-Line match, we want to actually check for a
current match even if we previously matched and are set exempt.
This fixes situations where you have an E-Lined CGI:IRC address,
a G-Lined IP range for some area/host/etc and a smaller E-Lined
IP range for known good clients. Currently when CGI:IRC changes
the IP, E-Lines are rechecked but because the user is already exempt
(from the CGI:IRC E-Line), they are set no longer exempt and match
a G-Line, when they should match an E-Line.
This exact change has been done before in commit 'c8b344e' and shortly
reverted in 'c490a90' to fix issue #989 (CGI:IRC users remaining exempt
when the CGI:IRC address is E-Lined but they are not).
The actual cause to this issue was likely that the user's hostname was
not changed from the CGI:IRC hostname/IP prior to rechecking E-Lines.
This is being fixed in a separate commit.
-rw-r--r-- | src/xline.cpp | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/src/xline.cpp b/src/xline.cpp index 0506005ad..586c7342a 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -593,9 +593,6 @@ void GLine::Apply(User* u) bool ELine::Matches(User *u) { - if (u->exempt) - return false; - if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map)) { if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) || |