bbfdmd: Fix memory leaks

This commit is contained in:
Amin Ben Romdhane 2024-04-23 16:10:50 +02:00
parent e1262f19a3
commit 115d945afd
2 changed files with 9 additions and 2 deletions

View file

@ -622,6 +622,7 @@ static int bbfdm_operate_handler(struct ubus_context *ctx, struct ubus_object *o
{ {
struct blob_attr *tb[__DM_OPERATE_MAX] = {NULL}; struct blob_attr *tb[__DM_OPERATE_MAX] = {NULL};
char path[PATH_MAX] = {0}; char path[PATH_MAX] = {0};
char *str = NULL;
bbfdm_data_t data; bbfdm_data_t data;
memset(&data, 0, sizeof(bbfdm_data_t)); memset(&data, 0, sizeof(bbfdm_data_t));
@ -641,8 +642,10 @@ static int bbfdm_operate_handler(struct ubus_context *ctx, struct ubus_object *o
data.bbf_ctx.in_param = path; data.bbf_ctx.in_param = path;
data.bbf_ctx.linker = tb[DM_OPERATE_COMMAND_KEY] ? blobmsg_get_string(tb[DM_OPERATE_COMMAND_KEY]) : ""; data.bbf_ctx.linker = tb[DM_OPERATE_COMMAND_KEY] ? blobmsg_get_string(tb[DM_OPERATE_COMMAND_KEY]) : "";
str = blobmsg_format_json(tb[DM_OPERATE_INPUT], true);
if (tb[DM_OPERATE_INPUT]) if (tb[DM_OPERATE_INPUT])
data.bbf_ctx.in_value = blobmsg_format_json(tb[DM_OPERATE_INPUT], true); data.bbf_ctx.in_value = str;
fill_optional_data(&data, tb[DM_OPERATE_OPTIONAL]); fill_optional_data(&data, tb[DM_OPERATE_OPTIONAL]);
@ -654,6 +657,7 @@ static int bbfdm_operate_handler(struct ubus_context *ctx, struct ubus_object *o
bbfdm_start_deferred(&data, bbfdm_operate_cmd_async); bbfdm_start_deferred(&data, bbfdm_operate_cmd_async);
} }
FREE(str);
return 0; return 0;
} }

View file

@ -49,9 +49,11 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand
if (dm_path == NULL) if (dm_path == NULL)
return; return;
char *str = blobmsg_format_json(msg, true);
struct dmctx bbf_ctx = { struct dmctx bbf_ctx = {
.in_param = dm_path, .in_param = dm_path,
.in_value = blobmsg_format_json(msg, true), .in_value = str,
.nextlevel = false, .nextlevel = false,
.iscommand = false, .iscommand = false,
.isevent = true, .isevent = true,
@ -96,6 +98,7 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand
end: end:
bbf_cleanup(&bbf_ctx); bbf_cleanup(&bbf_ctx);
FREE(str);
} }
static void add_ubus_event_handler(struct ubus_event_handler *ev, const char *ev_name, const char *dm_path, struct list_head *ev_list) static void add_ubus_event_handler(struct ubus_event_handler *ev, const char *ev_name, const char *dm_path, struct list_head *ev_list)