Module: kamailio Branch: master Commit: ee7496f18b626a6c5dff10753db5b546759f6f7b URL: https://github.com/kamailio/kamailio/commit/ee7496f18b626a6c5dff10753db5b546759f6f7b
Author: Federico Cabiddu <federico.cabi...@gmail.com> Committer: Federico Cabiddu <federico.cabi...@gmail.com> Date: 2020-04-22T10:54:29+02:00 siptrace: siptrace: fix memory leak in fake replies tracing --- Modified: src/modules/siptrace/siptrace.c --- Diff: https://github.com/kamailio/kamailio/commit/ee7496f18b626a6c5dff10753db5b546759f6f7b.diff Patch: https://github.com/kamailio/kamailio/commit/ee7496f18b626a6c5dff10753db5b546759f6f7b.patch --- diff --git a/src/modules/siptrace/siptrace.c b/src/modules/siptrace/siptrace.c index 3bd1f5a98c..26e9323ec7 100644 --- a/src/modules/siptrace/siptrace.c +++ b/src/modules/siptrace/siptrace.c @@ -1569,6 +1569,7 @@ static void trace_onreply_out(struct cell *t, int type, struct tmcb_params *ps) siptrace_data_t sto; siptrace_info_t* info; int faked = 0; + int parsed_f = 0; struct sip_msg *msg; struct sip_msg *req; struct ip_addr to_ip; @@ -1607,6 +1608,11 @@ static void trace_onreply_out(struct cell *t, int type, struct tmcb_params *ps) if(msg == NULL || msg == FAKED_REPLY) { msg = t->uas.request; faked = 1; + /* check if from header has been already parsed. + * If not we have to parse it in pkg memory and free it at the end. + */ + if (msg->from && msg->from->parsed == NULL) + parsed_f = 1; } if(sip_trace_msg_attrs(msg, &sto) < 0) { @@ -1686,10 +1692,16 @@ static void trace_onreply_out(struct cell *t, int type, struct tmcb_params *ps) if (info->uriState == STRACE_RAW_URI) { LM_BUG("uriState must be either UNUSED or PARSED here! must be a bug! Message won't be traced!\n"); - return; + goto end; } sip_trace_store(&sto, info->uriState == STRACE_PARSED_URI ? &info->u.dest_info : NULL, NULL); + +end: + if (faked && parsed_f) { + free_from(msg->from->parsed); + msg->from->parsed = NULL; + } } static void trace_tm_neg_ack_in(struct cell *t, int type, struct tmcb_params *ps) _______________________________________________ Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev