Fix potential callerid snafu's in iax and sip (based on 2562)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3895 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Mark Spencer 21 years ago
parent 375162b4fb
commit 864d84e1a7

@ -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)

@ -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;

Loading…
Cancel
Save