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: 16.4.0-rc1~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5002169d6aa4c0949535c79dec7264e5694f80d1;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 d5279bf932..56692673d4 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -3741,6 +3741,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 53f20a3240..2848d5a7ba 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; }