diff options
author | Sadie Powell <sadie@witchery.services> | 2025-02-05 13:23:50 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2025-02-05 13:45:15 +0000 |
commit | 115c9eb5a0c5f604ef35cbb906f3603f26e5279c (patch) | |
tree | 544cfbb8f904c37f7f7812ca527f35387ae7b09f /modules/sasl.cpp | |
parent | ee18083bb780fc3dd9ff8af221d970e4cd61a619 (diff) |
Merge the SASL data and ext parameters.
There might be more than this so its better to just store it in a
1+ parameter vector.
Diffstat (limited to 'modules/sasl.cpp')
-rw-r--r-- | modules/sasl.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/modules/sasl.cpp b/modules/sasl.cpp index 3c85aafd8..cb146d055 100644 --- a/modules/sasl.cpp +++ b/modules/sasl.cpp @@ -28,7 +28,7 @@ public: { // message = [authzid] UTF8NUL authcid UTF8NUL passwd Anope::string message; - Anope::B64Decode(m.data, message); + Anope::B64Decode(m.data[0], message); size_t zcsep = message.find('\0'); if (zcsep == Anope::string::npos) @@ -89,7 +89,7 @@ public: if (m.type == "S") { - mysess->cert = m.ext; + mysess->cert = m.data.size() > 1 ? "" : m.data[1]; sasl->SendMessage(sess, "C", "+"); } @@ -132,7 +132,7 @@ public: else if (m.type == "C") { Anope::string decoded; - Anope::B64Decode(m.data, decoded); + Anope::B64Decode(m.data[0], decoded); Anope::string user = "A user"; if (!sess->hostname.empty() && !sess->ip.empty()) @@ -168,6 +168,9 @@ public: void ProcessMessage(const SASL::Message &m) override { + if (m.data.empty()) + return; // Malformed. + if (m.target != "*") { Server *s = Server::Find(m.target); @@ -183,7 +186,7 @@ public: if (m.type == "S") { - ServiceReference<Mechanism> mech("SASL::Mechanism", m.data); + ServiceReference<Mechanism> mech("SASL::Mechanism", m.data[0]); if (!mech) { Session tmp(NULL, m.source); @@ -223,8 +226,8 @@ public: session = new Session(NULL, m.source); sessions[m.source] = session; } - session->hostname = m.data; - session->ip = m.ext; + session->hostname = m.data[0]; + session->ip = m.data.size() > 1 ? m.data[1] : ""; } if (session && session->mech) @@ -279,7 +282,7 @@ public: msg.source = this->GetAgent(); msg.target = session->uid; msg.type = mtype; - msg.data = data; + msg.data.push_back(data); IRCD->SendSASLMessage(msg); } |