From: George Joseph Date: Thu, 2 May 2019 18:29:49 +0000 (-0600) Subject: res_pjsip: Check return from pjsip_parse_uri calls X-Git-Tag: 13.27.0-rc1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d8a093a94685789298d17130e7b3f49c01ed2ab;p=thirdparty%2Fasterisk.git res_pjsip: Check return from pjsip_parse_uri calls Updated ast_sip_create_rdata_with_contact and registrar_find_contact to check the return from pjsip_parse_uri before attempting to use the uri returned. ASTERISK-28402 Reported-by: Ross Beer Change-Id: I9810b3b163c45ed5a56ec743586e5ce107f13ba7 --- diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 7773549adf..ba029f3c11 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -3517,6 +3517,10 @@ int ast_sip_create_rdata_with_contact(pjsip_rx_data *rdata, char *packet, const if (contact_hdr) { contact_hdr->uri = pjsip_parse_uri(rdata->tp_info.pool, (char *)contact, strlen(contact), PJSIP_PARSE_URI_AS_NAMEADDR); + if (!contact_hdr->uri) { + ast_log(LOG_WARNING, "Unable to parse contact URI from '%s'.\n", contact); + return -1; + } } } diff --git a/res/res_pjsip_registrar.c b/res/res_pjsip_registrar.c index fa3e1f08cf..236d846cc7 100644 --- a/res/res_pjsip_registrar.c +++ b/res/res_pjsip_registrar.c @@ -129,6 +129,10 @@ static int registrar_find_contact(void *obj, void *arg, int flags) } contact_uri = pjsip_parse_uri(details->pool, (char*)contact->uri, strlen(contact->uri), 0); + if (!contact_uri) { + ast_log(LOG_WARNING, "Unable to parse contact URI from '%s'.\n", contact->uri); + return 0; + } return (pjsip_uri_cmp(PJSIP_URI_IN_CONTACT_HDR, details->uri, contact_uri) == PJ_SUCCESS) ? CMP_MATCH : 0; }