summaryrefslogtreecommitdiff
path: root/modules/extra
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-02-25 23:13:54 +0000
committerSadie Powell <sadie@witchery.services>2025-02-25 23:13:54 +0000
commit752f5e269e99acdd0c2795a2c2eedc44875d5fed (patch)
treeb4b4ef22c9b5d8407612887b89051f9270f7c780 /modules/extra
parentbb3e124bdb07cc12d51a0483b6cf913e4af58b8a (diff)
Deduplicate RPC parameter count checks.
Diffstat (limited to 'modules/extra')
-rw-r--r--modules/extra/xmlrpc.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/modules/extra/xmlrpc.cpp b/modules/extra/xmlrpc.cpp
index 94beb2088..00b7d92ac 100644
--- a/modules/extra/xmlrpc.cpp
+++ b/modules/extra/xmlrpc.cpp
@@ -145,7 +145,17 @@ public:
}
xmlrpc_DECREF(params);
- if (!event->second->Run(this, client, request))
+ auto *eh = event->second;
+ if (request.data.size() < eh->GetMinParams())
+ {
+ auto error = Anope::printf("Not enough parameters (given %zu, expected %zu)",
+ request.data.size(), eh->GetMinParams());
+ xmlrpc_env_set_fault(&env, RPC::ERR_INVALID_PARAMS, error.c_str());
+ SendError(reply, env);
+ return true;
+ }
+
+ if (!eh->Run(this, client, request))
return false;
this->Reply(request);