diff options
Diffstat (limited to 'src/modules/m_gateway.cpp')
| -rw-r--r-- | src/modules/m_gateway.cpp | 21 |
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) { |
