From c01430e3fce8289eb055b089ab4278ade6f6f34f Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Mon, 28 Nov 2016 23:18:38 +0200 Subject: [PATCH] Fix module commands with no arguments Passing zero as the argument count would lead to a malloc for zero bytes which would always cause a failure. --- server/core/modulecmd.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/server/core/modulecmd.c b/server/core/modulecmd.c index b3e3c870c..018f7bb97 100644 --- a/server/core/modulecmd.c +++ b/server/core/modulecmd.c @@ -136,10 +136,11 @@ static MODULECMD* command_create(const char *identifier, const char *domain, MODULECMDFN entry_point, int argc, modulecmd_arg_type_t* argv) { + ss_dassert((argc && argv) || (argc == 0 && argv == NULL)); MODULECMD *rval = MXS_MALLOC(sizeof(*rval)); char *id = MXS_STRDUP(identifier); char *dm = MXS_STRDUP(domain); - modulecmd_arg_type_t *types = MXS_MALLOC(sizeof(*types) * argc); + modulecmd_arg_type_t *types = MXS_MALLOC(sizeof(*types) * (argc ? argc : 1)); if (rval && id && dm && types) { @@ -154,6 +155,13 @@ static MODULECMD* command_create(const char *identifier, const char *domain, types[i] = argv[i]; } + if (argc == 0) + { + /** The command requires no arguments */ + types[0].type = MODULECMD_ARG_NONE; + types[0].description = ""; + } + rval->func = entry_point; rval->identifier = id; rval->domain = dm;