Commit 02c6e1d0 authored by Yousong Zhou's avatar Yousong Zhou Committed by Jo-Philipp Wich

exec: properly free memory on rpc_exec() error

Signed-off-by: default avatarYousong Zhou <yszhou4tech@gmail.com>
[fix whitespace]
Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
parent cc502635
......@@ -313,7 +313,7 @@ rpc_exec(const char **args, rpc_exec_write_cb_t in,
switch ((pid = fork()))
{
case -1:
return rpc_errno_status();
goto fail_fork;
case 0:
uloop_done();
......@@ -372,6 +372,10 @@ rpc_exec(const char **args, rpc_exec_write_cb_t in,
return UBUS_STATUS_OK;
fail_fork:
close(epipe[0]);
close(epipe[1]);
fail_epipe:
close(opipe[0]);
close(opipe[1]);
......@@ -381,5 +385,6 @@ fail_opipe:
close(ipipe[1]);
fail_ipipe:
free(c);
return rpc_errno_status();
}
......@@ -161,9 +161,12 @@ rpc_plugin_call(struct ubus_context *ctx, struct ubus_object *obj,
c->argv[1] = "call";
c->argv[2] = c->method;
return rpc_exec(c->argv, rpc_plugin_call_stdin_cb,
rpc_plugin_call_stdout_cb, rpc_plugin_call_stderr_cb,
rpc_plugin_call_finish_cb, c, ctx, req);
rv = rpc_exec(c->argv, rpc_plugin_call_stdin_cb,
rpc_plugin_call_stdout_cb, rpc_plugin_call_stderr_cb,
rpc_plugin_call_finish_cb, c, ctx, req);
if (rv == UBUS_STATUS_OK)
return rv;
fail:
if (c)
......
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