exec: properly free memory on rpc_exec() error
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> [fix whitespace] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
cc50263504
commit
02c6e1d08c
2 changed files with 12 additions and 4 deletions
7
exec.c
7
exec.c
|
@ -313,7 +313,7 @@ rpc_exec(const char **args, rpc_exec_write_cb_t in,
|
||||||
switch ((pid = fork()))
|
switch ((pid = fork()))
|
||||||
{
|
{
|
||||||
case -1:
|
case -1:
|
||||||
return rpc_errno_status();
|
goto fail_fork;
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
uloop_done();
|
uloop_done();
|
||||||
|
@ -372,6 +372,10 @@ rpc_exec(const char **args, rpc_exec_write_cb_t in,
|
||||||
|
|
||||||
return UBUS_STATUS_OK;
|
return UBUS_STATUS_OK;
|
||||||
|
|
||||||
|
fail_fork:
|
||||||
|
close(epipe[0]);
|
||||||
|
close(epipe[1]);
|
||||||
|
|
||||||
fail_epipe:
|
fail_epipe:
|
||||||
close(opipe[0]);
|
close(opipe[0]);
|
||||||
close(opipe[1]);
|
close(opipe[1]);
|
||||||
|
@ -381,5 +385,6 @@ fail_opipe:
|
||||||
close(ipipe[1]);
|
close(ipipe[1]);
|
||||||
|
|
||||||
fail_ipipe:
|
fail_ipipe:
|
||||||
|
free(c);
|
||||||
return rpc_errno_status();
|
return rpc_errno_status();
|
||||||
}
|
}
|
||||||
|
|
9
plugin.c
9
plugin.c
|
@ -161,9 +161,12 @@ rpc_plugin_call(struct ubus_context *ctx, struct ubus_object *obj,
|
||||||
c->argv[1] = "call";
|
c->argv[1] = "call";
|
||||||
c->argv[2] = c->method;
|
c->argv[2] = c->method;
|
||||||
|
|
||||||
return rpc_exec(c->argv, rpc_plugin_call_stdin_cb,
|
rv = rpc_exec(c->argv, rpc_plugin_call_stdin_cb,
|
||||||
rpc_plugin_call_stdout_cb, rpc_plugin_call_stderr_cb,
|
rpc_plugin_call_stdout_cb, rpc_plugin_call_stderr_cb,
|
||||||
rpc_plugin_call_finish_cb, c, ctx, req);
|
rpc_plugin_call_finish_cb, c, ctx, req);
|
||||||
|
|
||||||
|
if (rv == UBUS_STATUS_OK)
|
||||||
|
return rv;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (c)
|
if (c)
|
||||||
|
|
Loading…
Reference in a new issue