From dd24f8ac713793d5d5a7e959228937f48788ba66 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Fri, 11 Oct 2019 12:21:16 +0100 Subject: Convert a bunch of LocalUser* casts to IS_LOCAL. This is a lot safer and handles users changing servers properly. --- src/modules/m_dnsbl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/modules/m_dnsbl.cpp') diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index 9a9ad85a2..c9be107b8 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -63,7 +63,7 @@ class DNSBLResolver : public DNS::Request void OnLookupComplete(const DNS::Query *r) CXX11_OVERRIDE { /* Check the user still exists */ - LocalUser* them = (LocalUser*)ServerInstance->FindUUID(theiruid); + LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid)); if (!them) return; @@ -209,7 +209,7 @@ class DNSBLResolver : public DNS::Request void OnError(const DNS::Query *q) CXX11_OVERRIDE { - LocalUser* them = (LocalUser*)ServerInstance->FindUUID(theiruid); + LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid)); if (!them) return; -- cgit v1.3.1-10-gc9f91 From 0d2f3cdc51082eb79731d1438da7b3fe2da6cf58 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Thu, 24 Oct 2019 15:14:35 +0100 Subject: Ignore DNSBL responses if the user's IP address has changed. --- src/modules/m_dnsbl.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/modules/m_dnsbl.cpp') diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index c9be107b8..484f5e434 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -47,15 +47,21 @@ class DNSBLConfEntry : public refcountbase */ class DNSBLResolver : public DNS::Request { + private: + irc::sockets::sockaddrs theirsa; std::string theiruid; LocalStringExt& nameExt; LocalIntExt& countExt; reference ConfEntry; public: - DNSBLResolver(DNS::Manager *mgr, Module *me, LocalStringExt& match, LocalIntExt& ctr, const std::string &hostname, LocalUser* u, reference conf) - : DNS::Request(mgr, me, hostname, DNS::QUERY_A, true), theiruid(u->uuid), nameExt(match), countExt(ctr), ConfEntry(conf) + : DNS::Request(mgr, me, hostname, DNS::QUERY_A, true) + , theirsa(u->client_sa) + , theiruid(u->uuid) + , nameExt(match) + , countExt(ctr) + , ConfEntry(conf) { } @@ -64,7 +70,7 @@ class DNSBLResolver : public DNS::Request { /* Check the user still exists */ LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid)); - if (!them) + if (!them || them->client_sa != theirsa) return; const DNS::ResourceRecord* const ans_record = r->FindAnswerOfType(DNS::QUERY_A); @@ -210,7 +216,7 @@ class DNSBLResolver : public DNS::Request void OnError(const DNS::Query *q) CXX11_OVERRIDE { LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid)); - if (!them) + if (!them || them->client_sa != theirsa) return; int i = countExt.get(them); -- cgit v1.3.1-10-gc9f91