Commit 37aa9196 authored by Jo-Philipp Wich's avatar Jo-Philipp Wich

plugin: fix leaking invoked method name for exec plugins

The invoked method name was separately duplicated from the call_context
structure. The structure itself is eventually freed by rpc_exec_reply()
but the method string it points to is lost after that.

Use calloc_a() instead to allocate the string copy buffer together with
the context structure, to ensure that all involved memory is freed.
Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
parent 95f0973c
......@@ -135,14 +135,14 @@ rpc_plugin_call(struct ubus_context *ctx, struct ubus_object *obj,
{
int rv = UBUS_STATUS_UNKNOWN_ERROR;
struct call_context *c;
char *plugin;
char *plugin, *mptr;
c = calloc(1, sizeof(*c));
c = calloc_a(sizeof(*c), &mptr, strlen(method) + 1);
if (!c)
goto fail;
c->method = strdup(method);
c->method = strcpy(mptr, method);
c->input = blobmsg_format_json(msg, true);
c->tok = json_tokener_new();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment