aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-03 14:57:01 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-03 14:57:01 +0000
commit30571fa22731fc879f9f311ced9f5e0875ee5f4a (patch)
tree27edceb24c941133aa4837bed4671bbf2aeeacfe
parent6208311110988d9c431ac33f1a1bf247fb53e62d (diff)
Fix potential callerid snafu's in iax and sip (based on 2562)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3895 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_iax2.c4
-rwxr-xr-xchannels/chan_sip.c9
2 files changed, 10 insertions, 3 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index dfa2ec3b5..b828719b8 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -3604,8 +3604,10 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies
return res;
if (ies->called_number)
strncpy(iaxs[callno]->exten, ies->called_number, sizeof(iaxs[callno]->exten) - 1);
- if (ies->calling_number)
+ if (ies->calling_number) {
+ ast_shrink_phone_number(ies->calling_number);
strncpy(iaxs[callno]->cid_num, ies->calling_number, sizeof(iaxs[callno]->cid_num) - 1);
+ }
if (ies->calling_name)
strncpy(iaxs[callno]->cid_name, ies->calling_name, sizeof(iaxs[callno]->cid_name) - 1);
if (ies->calling_ani)
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 8b8f6691a..94e4aa6d5 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2090,7 +2090,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, char *title)
ast_mutex_unlock(&usecnt_lock);
strncpy(tmp->context, i->context, sizeof(tmp->context)-1);
strncpy(tmp->exten, i->exten, sizeof(tmp->exten)-1);
- if (!ast_strlen_zero(i->cid_num))
+ if (!ast_strlen_zero(i->cid_num))
tmp->cid.cid_num = strdup(i->cid_num);
if (!ast_strlen_zero(i->cid_name))
tmp->cid.cid_name = strdup(i->cid_name);
@@ -5361,6 +5361,7 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
if ((c = strchr(of, ':')))
*c = '\0';
strncpy(p->cid_num, of, sizeof(p->cid_num) - 1);
+ ast_shrink_phone_number(p->cid_num);
if (*calleridname)
strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
if (ast_strlen_zero(of))
@@ -5380,6 +5381,7 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
if (*calleridname)
strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
+ ast_shrink_phone_number(p->cid_num);
}
if (p->rtp) {
@@ -5394,8 +5396,10 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
sip_cancel_destroy(p);
if (!ast_strlen_zero(user->context))
strncpy(p->context, user->context, sizeof(p->context) - 1);
- if (!ast_strlen_zero(user->cid_num) && !ast_strlen_zero(p->cid_num))
+ if (!ast_strlen_zero(user->cid_num) && !ast_strlen_zero(p->cid_num)) {
strncpy(p->cid_num, user->cid_num, sizeof(p->cid_num) - 1);
+ ast_shrink_phone_number(p->cid_num);
+ }
if (!ast_strlen_zero(user->cid_name) && !ast_strlen_zero(p->cid_name))
strncpy(p->cid_name, user->cid_name, sizeof(p->cid_name) - 1);
strncpy(p->username, user->name, sizeof(p->username) - 1);
@@ -5454,6 +5458,7 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
if (*calleridname)
strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
+ ast_shrink_phone_number(p->cid_num);
}
#ifdef OSP_SUPPORT
p->ospauth = peer->ospauth;