From 5002169d6aa4c0949535c79dec7264e5694f80d1 Mon Sep 17 00:00:00 2001 From: George Joseph Date: Thu, 2 May 2019 12:29:49 -0600 Subject: [PATCH] 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 --- res/res_pjsip.c | 4 ++++ res/res_pjsip_registrar.c | 4 ++++ 2 files changed, 8 insertions(+) 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; }