Skip to content

Commit

Permalink
mid_registrar: Avoid some memory leaks on parsing errors
Browse files Browse the repository at this point in the history
Also improve mri_free(): avoid redundant checks on non-NULL fields.

Suggested by Chad Attermann <attermann@gmail.com>

(cherry picked from commit 4b9f34d)
  • Loading branch information
liviuchircu committed Aug 31, 2017
1 parent ce40839 commit cd5be93
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 11 deletions.
15 changes: 4 additions & 11 deletions modules/mid_registrar/mid_registrar.c
Expand Up @@ -422,17 +422,10 @@ void mri_free(struct mid_reg_info *mri)
mri->main_reg_uri.s);
LM_DBG("ct_uri: '%.*s' %p\n", mri->ct_uri.len, mri->ct_uri.s, mri->ct_uri.s);

if (mri->aor.s)
shm_free(mri->aor.s);

if (mri->from.s)
shm_free(mri->from.s);

if (mri->to.s)
shm_free(mri->to.s);

if (mri->callid.s)
shm_free(mri->callid.s);
shm_free(mri->aor.s);
shm_free(mri->from.s);
shm_free(mri->to.s);
shm_free(mri->callid.s);

if (mri->main_reg_uri.s)
shm_free(mri->main_reg_uri.s);
Expand Down
2 changes: 2 additions & 0 deletions modules/mid_registrar/save.c
Expand Up @@ -1438,6 +1438,7 @@ static int prepare_forward(struct sip_msg *msg, udomain_t *ud,

if (parse_from_header(msg) != 0) {
LM_ERR("failed to parse From hf\n");
mri_free(mri);
return -1;
}

Expand All @@ -1453,6 +1454,7 @@ static int prepare_forward(struct sip_msg *msg, udomain_t *ud,
if (tm_api.register_tmcb(msg, NULL, TMCB_REQUEST_FWDED,
mid_reg_req_fwded, mri, NULL) <= 0) {
LM_ERR("cannot register additional callbacks\n");
mri_free(mri);
return -1;
}

Expand Down

0 comments on commit cd5be93

Please sign in to comment.