summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins2 <jenkins2@gerrit.asterisk.org>2017-04-27 16:47:34 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-04-27 16:47:34 -0500
commit175297fe3456adf648382001c1b2ded3ff83462a (patch)
treedd6751ce4f4cb09b5920a1734a15d89e4ecd7689
parent49b2d1bde5a17363d631d79296fa36a5c40b0628 (diff)
parentc6b757fa05c4c3fe1b7fa77844b9e5e3203d859f (diff)
Merge "res_pjsip/res_pjsip_callerid: NULL check on caller id name string"
-rw-r--r--res/res_pjsip.c12
-rw-r--r--res/res_pjsip_caller_id.c9
2 files changed, 15 insertions, 6 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c
index e4bcb7038..9de2176a6 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -4420,11 +4420,15 @@ void ast_sip_modify_id_header(pj_pool_t *pool, pjsip_fromto_hdr *id_hdr, const s
id_uri = pjsip_uri_get_uri(id_name_addr->uri);
if (id->name.valid) {
- int name_buf_len = strlen(id->name.str) * 2 + 1;
- char *name_buf = ast_alloca(name_buf_len);
+ if (!ast_strlen_zero(id->name.str)) {
+ int name_buf_len = strlen(id->name.str) * 2 + 1;
+ char *name_buf = ast_alloca(name_buf_len);
- ast_escape_quoted(id->name.str, name_buf, name_buf_len);
- pj_strdup2(pool, &id_name_addr->display, name_buf);
+ ast_escape_quoted(id->name.str, name_buf, name_buf_len);
+ pj_strdup2(pool, &id_name_addr->display, name_buf);
+ } else {
+ pj_strdup2(pool, &id_name_addr->display, NULL);
+ }
}
if (id->number.valid) {
diff --git a/res/res_pjsip_caller_id.c b/res/res_pjsip_caller_id.c
index 7948d33be..470d90f43 100644
--- a/res/res_pjsip_caller_id.c
+++ b/res/res_pjsip_caller_id.c
@@ -436,7 +436,7 @@ static pjsip_fromto_hdr *create_new_id_hdr(const pj_str_t *hdr_name, pjsip_fromt
id_name_addr = pjsip_uri_clone(tdata->pool, base->uri);
id_uri = pjsip_uri_get_uri(id_name_addr->uri);
- if (id->name.valid) {
+ if (id->name.valid && !ast_strlen_zero(id->name.str)) {
int name_buf_len = strlen(id->name.str) * 2 + 1;
char *name_buf = ast_alloca(name_buf_len);
@@ -450,7 +450,12 @@ static pjsip_fromto_hdr *create_new_id_hdr(const pj_str_t *hdr_name, pjsip_fromt
pj_strdup2(tdata->pool, &id_name_addr->display, NULL);
}
- pj_strdup2(tdata->pool, &id_uri->user, id->number.str);
+ if (id->number.valid) {
+ pj_strdup2(tdata->pool, &id_uri->user, id->number.str);
+ } else {
+ /* Similar to name, make sure the number is also cleared when invalid */
+ pj_strdup2(tdata->pool, &id_uri->user, NULL);
+ }
id_hdr->uri = (pjsip_uri *) id_name_addr;
return id_hdr;