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
This commit is contained in:
parent
f2cb892d7c
commit
5002169d6a
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue