summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-06-02 03:03:43 +0000
committerBenny Prijono <bennylp@teluu.com>2010-06-02 03:03:43 +0000
commit4dc0593088419a73f1551a6d690e1cd5bfe1cc0e (patch)
tree6c208814badbacccf2af3726e72e167f003c7388 /pjsip/src/pjsua-lib
parentccabaf62fd587c48c702db90265c776a893bab05 (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.c9
-rw-r--r--pjsip/src/pjsua-lib/pjsua_im.c2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c2
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;
}