Skip to content

Commit

Permalink
Fix avpops memory leak in avp_db_load / avp_db_delete / avp_db_store
Browse files Browse the repository at this point in the history
  • Loading branch information
nikbyte committed Feb 9, 2025
1 parent 841c8bc commit b76c4e6
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions modules/avpops/avpops.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ static int fixup_free_check_avp_p2(void** param);
static int fixup_free_avp_subst_p1(void** param);
static int fixup_free_avp_subst_p2(void** param);
static int fixup_free_pvname_list(void** param);
static int fixup_free_avp_source(void** param);
static int fixup_free_avp_dbparam(void** param);
static int fixup_avp_shuffle_name(void** param);

Expand Down Expand Up @@ -146,22 +147,22 @@ static const cmd_export_t cmds[] = {
STARTUP_ROUTE|TIMER_ROUTE|EVENT_ROUTE},

{"avp_db_load", (cmd_function)w_dbload_avps, {
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_pkg},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_avp_source},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_dbparam_scheme, fixup_free_avp_dbparam},
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0},
{CMD_PARAM_STR|CMD_PARAM_OPT, fixup_avp_prefix, fixup_free_pkg}, {0, 0, 0}},
REQUEST_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE|ONREPLY_ROUTE|LOCAL_ROUTE|
STARTUP_ROUTE|TIMER_ROUTE|EVENT_ROUTE},

{"avp_db_delete", (cmd_function)w_dbdelete_avps, {
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_pkg},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_avp_source},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_dbparam, fixup_free_avp_dbparam},
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0}, {0, 0, 0}},
REQUEST_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE|ONREPLY_ROUTE|LOCAL_ROUTE|
STARTUP_ROUTE|TIMER_ROUTE|EVENT_ROUTE},

{"avp_db_store", (cmd_function)w_dbstore_avps, {
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_pkg},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_source, fixup_free_avp_source},
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND, fixup_db_avp_dbparam, fixup_free_avp_dbparam},
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0}, {0, 0, 0}},
REQUEST_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE|ONREPLY_ROUTE|LOCAL_ROUTE|
Expand Down Expand Up @@ -576,6 +577,17 @@ static int fixup_db_avp_dbparam(void** param)
return fixup_db_avp(param, 2, 0);
}

static int fixup_free_avp_source(void** param)
{
struct fis_param* sp = (struct fis_param*)*param;

if ((sp->opd & AVPOPS_VAL_STR) && sp->u.s.s) {
pkg_free(sp->u.s.s);
}
pkg_free(sp);
return 0;
}

static int fixup_free_avp_dbparam(void** param)
{
struct db_param *dbp = (struct db_param *)*param;
Expand Down

0 comments on commit b76c4e6

Please sign in to comment.