diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-06-02 03:03:43 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-06-02 03:03:43 +0000 |
commit | 4dc0593088419a73f1551a6d690e1cd5bfe1cc0e (patch) | |
tree | 6c208814badbacccf2af3726e72e167f003c7388 /pjsip/src/pjsua-lib | |
parent | ccabaf62fd587c48c702db90265c776a893bab05 (diff) |
Fixed #1092 (Crash when receiving various messages with "Contact: *" header format)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3190 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_acc.c | 9 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_im.c | 2 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_pres.c | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index ba46d368..ad25152f 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -2237,9 +2237,12 @@ PJ_DEF(pj_status_t) pjsua_acc_create_uas_contact( pj_pool_t *pool, pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, pos); if (h_contact) { - uri = (pjsip_uri*) pjsip_uri_get_uri(h_contact->uri); - if (!PJSIP_URI_SCHEME_IS_SIP(uri) && - !PJSIP_URI_SCHEME_IS_SIPS(uri)) + if (h_contact->uri) + uri = (pjsip_uri*) pjsip_uri_get_uri(h_contact->uri); + else + uri = NULL; + if (!uri || (!PJSIP_URI_SCHEME_IS_SIP(uri) && + !PJSIP_URI_SCHEME_IS_SIPS(uri))) { pos = (pjsip_hdr*)h_contact->next; if (pos == &rdata->msg_info.msg->hdr) diff --git a/pjsip/src/pjsua-lib/pjsua_im.c b/pjsip/src/pjsua-lib/pjsua_im.c index 282f7311..3be344d4 100644 --- a/pjsip/src/pjsua-lib/pjsua_im.c +++ b/pjsip/src/pjsua-lib/pjsua_im.c @@ -169,7 +169,7 @@ void pjsua_im_process_pager(int call_id, const pj_str_t *from, contact_hdr = (pjsip_contact_hdr*) pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, NULL); - if (contact_hdr) { + if (contact_hdr && contact_hdr->uri) { contact.ptr = (char*) pj_pool_alloc(rdata->tp_info.pool, PJSIP_MAX_URL_SIZE); contact.slen = pjsip_uri_print(PJSIP_URI_IN_CONTACT_HDR, diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c index 620c7cd7..651dad19 100644 --- a/pjsip/src/pjsua-lib/pjsua_pres.c +++ b/pjsip/src/pjsua-lib/pjsua_pres.c @@ -1610,7 +1610,7 @@ static void pjsua_evsub_on_tsx_state(pjsip_evsub *sub, contact_hdr = (pjsip_contact_hdr*) pjsip_msg_find_hdr(event->body.rx_msg.rdata->msg_info.msg, PJSIP_H_CONTACT, NULL); - if (!contact_hdr) { + if (!contact_hdr || !contact_hdr->uri) { return; } |