aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_gateway.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_gateway.cpp')
-rw-r--r--src/modules/m_gateway.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/modules/m_gateway.cpp b/src/modules/m_gateway.cpp
index 33e2f10f7..78313dc68 100644
--- a/src/modules/m_gateway.cpp
+++ b/src/modules/m_gateway.cpp
@@ -107,9 +107,24 @@ public:
return false;
// Does the user have a valid fingerprint?
- const std::string fp = sslapi ? sslapi->GetFingerprint(user) : "";
- if (!fingerprint.empty() && !InspIRCd::TimingSafeCompare(fp, fingerprint))
- return false;
+ if (!fingerprint.empty())
+ {
+ if (!sslapi)
+ return false;
+
+ bool okay = false;
+ for (const auto& fp : sslapi->GetFingerprints(user))
+ {
+ if (InspIRCd::TimingSafeCompare(fp, fingerprint))
+ {
+ okay = true;
+ break;
+ }
+ }
+
+ if (!okay)
+ return false;
+ }
for (const auto& mask : hostmasks)
{