Skip to content

Commit 523ed18

Browse files
authored
Merge pull request #3576 from nikbyte/memfix_sqlops
Fix sqlops memory leak in sql_avp_load / sql_avp_delete / sql_avp_store (for 3.5 and master)
2 parents c88e9f4 + 9062d8e commit 523ed18

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

modules/sqlops/sqlops.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ static int fixup_pvname_list(void** param);
7979
static int fixup_avpname_list(void** param);
8080

8181
static int fixup_free_pvname_list(void** param);
82+
static int fixup_free_avp_source(void** param);
8283
static int fixup_free_avp_dbparam(void** param);
8384

8485
static int w_sql_avp_load(struct sip_msg* msg, void* source,
@@ -136,7 +137,7 @@ static const cmd_export_t cmds[] = {
136137

137138
{"sql_avp_load", (cmd_function)w_sql_avp_load, {
138139
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
139-
fixup_sql_avp_source, fixup_free_pkg},
140+
fixup_sql_avp_source, fixup_free_avp_source},
140141
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
141142
fixup_sql_avp_dbparam_scheme, fixup_free_avp_dbparam},
142143
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0},
@@ -146,7 +147,7 @@ static const cmd_export_t cmds[] = {
146147

147148
{"sql_avp_delete", (cmd_function)w_sql_avp_delete, {
148149
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
149-
fixup_sql_avp_source, fixup_free_pkg},
150+
fixup_sql_avp_source, fixup_free_avp_source},
150151
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
151152
fixup_sql_avp_dbparam, fixup_free_avp_dbparam},
152153
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0},
@@ -155,15 +156,14 @@ static const cmd_export_t cmds[] = {
155156

156157
{"sql_avp_store", (cmd_function)w_sql_avp_store, {
157158
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
158-
fixup_sql_avp_source, fixup_free_pkg},
159+
fixup_sql_avp_source, fixup_free_avp_source},
159160
{CMD_PARAM_STR|CMD_PARAM_NO_EXPAND,
160161
fixup_sql_avp_dbparam, fixup_free_avp_dbparam},
161162
{CMD_PARAM_INT|CMD_PARAM_OPT, fixup_db_url, 0},
162163
{0, 0, 0}},
163164
ALL_ROUTES},
164165

165166
{"sql_query", (cmd_function)w_sql_query, {
166-
{CMD_PARAM_STR, 0, 0},
167167
{CMD_PARAM_STR|CMD_PARAM_OPT|CMD_PARAM_NO_EXPAND,
168168
fixup_avpname_list, fixup_free_pvname_list},
169169
{CMD_PARAM_INT|CMD_PARAM_OPT,
@@ -544,6 +544,17 @@ static int fixup_sql_avp_dbparam(void** param)
544544
return fixup_sql_avp(param, 2, 0);
545545
}
546546

547+
static int fixup_free_avp_source(void** param)
548+
{
549+
struct fis_param* sp = (struct fis_param*)*param;
550+
551+
if ((sp->opd & SQLOPS_VAL_STR) && sp->u.s.s) {
552+
pkg_free(sp->u.s.s);
553+
}
554+
pkg_free(sp);
555+
return 0;
556+
}
557+
547558
static int fixup_free_avp_dbparam(void** param)
548559
{
549560
struct db_param *dbp = (struct db_param *)*param;

0 commit comments

Comments
 (0)