From 5e4013d613824d9b55665d4a3079199f553c13bf Mon Sep 17 00:00:00 2001 From: kpfleming Date: Sun, 15 May 2005 23:26:45 +0000 Subject: more strncpy -> ast_copy_string conversions, fixing some buglets along the way add recommendation to CODING-GUIDELINES to use ast_copy_string instead of strncpy in new code git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5686 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_iax2.c | 224 +++++++++++++++++++++++++-------------------------- 1 file changed, 112 insertions(+), 112 deletions(-) (limited to 'channels/chan_iax2.c') diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 1b78bf732..a76082aa2 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -816,7 +816,7 @@ static int iax2_getpeername(struct sockaddr_in sin, char *host, int len, int loc while(peer) { if ((peer->addr.sin_addr.s_addr == sin.sin_addr.s_addr) && (peer->addr.sin_port == sin.sin_port)) { - strncpy(host, peer->name, len-1); + ast_copy_string(host, peer->name, len); res = 1; break; } @@ -843,9 +843,9 @@ static struct chan_iax2_pvt *new_iax(struct sockaddr_in *sin, int lockpeer, cons tmp->autoid = -1; tmp->authid = -1; tmp->initid = -1; - /* strncpy(tmp->context, context, sizeof(tmp->context)-1); */ - strncpy(tmp->exten, "s", sizeof(tmp->exten)-1); - strncpy(tmp->host, host, sizeof(tmp->host)-1); + /* ast_copy_string(tmp->context, context, sizeof(tmp->context)); */ + ast_copy_string(tmp->exten, "s", sizeof(tmp->exten)); + ast_copy_string(tmp->host, host, sizeof(tmp->host)); #ifdef NEWJB { jb_info jbinfo; @@ -1036,7 +1036,7 @@ static int find_callno(unsigned short callno, unsigned short dcallno, struct soc iaxs[x]->lagid = ast_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)(long)x); iaxs[x]->amaflags = amaflags; ast_copy_flags(iaxs[x], (&globalflags), IAX_NOTRANSFER | IAX_USEJITTERBUF | IAX_FORCEJITTERBUF); - strncpy(iaxs[x]->accountcode, accountcode, sizeof(iaxs[x]->accountcode)-1); + ast_copy_string(iaxs[x]->accountcode, accountcode, sizeof(iaxs[x]->accountcode)); } else { ast_log(LOG_WARNING, "Out of resources\n"); ast_mutex_unlock(&iaxsl[x]); @@ -1837,13 +1837,13 @@ static int iax2_show_peer(int fd, int argc, char *argv[]) ast_cli(fd, " Status : "); if (peer->lastms < 0) - strncpy(status, "UNREACHABLE", sizeof(status) - 1); + ast_copy_string(status, "UNREACHABLE", sizeof(status)); else if (peer->lastms > peer->maxms) snprintf(status, sizeof(status), "LAGGED (%d ms)", peer->lastms); else if (peer->lastms) snprintf(status, sizeof(status), "OK (%d ms)", peer->lastms); else - strncpy(status, "UNKNOWN", sizeof(status) - 1); + ast_copy_string(status, "UNKNOWN", sizeof(status)); ast_cli(fd, "%s\n",status); ast_cli(fd,"\n"); if (ast_test_flag(peer, IAX_TEMPONLY)) @@ -1931,7 +1931,7 @@ static int iax2_show_cache(int fd, int argc, char *argv[]) if (!ast_strlen_zero(tmp)) tmp[strlen(tmp) - 1] = '\0'; else - strncpy(tmp, "(none)", sizeof(tmp) - 1); + ast_copy_string(tmp, "(none)", sizeof(tmp)); y=0; pc = strchr(dp->peercontext, '@'); if (!pc) @@ -2664,9 +2664,9 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, if (maxtime) *maxtime = p->maxms; /* Max time they should take */ if (context) - strncpy(context, p->context, AST_MAX_EXTENSION - 1); + ast_copy_string(context, p->context, sizeof(context)); if (peercontext) - strncpy(peercontext, p->peercontext, AST_MAX_EXTENSION - 1); + ast_copy_string(peercontext, p->peercontext, sizeof(peercontext)); if (trunk) *trunk = ast_test_flag(p, IAX_TRUNK); if (capability) @@ -2674,7 +2674,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, if (encmethods) *encmethods = p->encmethods; if (username) - strncpy(username, p->username, usernlen); + ast_copy_string(username, p->username, usernlen); if (p->addr.sin_addr.s_addr) { sin->sin_addr = p->addr.sin_addr; sin->sin_port = p->addr.sin_port; @@ -2708,7 +2708,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, p = NULL; } } else - strncpy(secret, p->secret, seclen); /* safe */ + ast_copy_string(secret, p->secret, seclen); } if (timezone) snprintf(timezone, tzlen-1, "%s", p->zonetag); @@ -2802,7 +2802,7 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout) ast_log(LOG_WARNING, "Line is already in use (%s)?\n", c->name); return -1; } - strncpy(host, dest, sizeof(host)-1); + ast_copy_string(host, dest, sizeof(host)); stringp=host; strsep(&stringp, "/"); /* If no destination extension specified, use 's' */ @@ -2844,7 +2844,7 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout) return -1; } /* Keep track of the context for outgoing calls too */ - strncpy(c->context, context, sizeof(c->context) - 1); + ast_copy_string(c->context, context, sizeof(c->context)); if (portno) { sin.sin_port = htons(atoi(portno)); } @@ -2891,19 +2891,19 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout) secret = storedsecret; ast_mutex_lock(&iaxsl[callno]); if (!ast_strlen_zero(c->context)) - strncpy(iaxs[callno]->context, c->context, sizeof(iaxs[callno]->context) - 1); + ast_copy_string(iaxs[callno]->context, c->context, sizeof(iaxs[callno]->context)); if (username) - strncpy(iaxs[callno]->username, username, sizeof(iaxs[callno]->username)-1); + ast_copy_string(iaxs[callno]->username, username, sizeof(iaxs[callno]->username)); iaxs[callno]->encmethods = encmethods; if (secret) { if (secret[0] == '[') { /* This is an RSA key, not a normal secret */ - strncpy(iaxs[callno]->outkey, secret + 1, sizeof(iaxs[callno]->secret)-1); + ast_copy_string(iaxs[callno]->outkey, secret + 1, sizeof(iaxs[callno]->secret)); if (!ast_strlen_zero(iaxs[callno]->outkey)) { iaxs[callno]->outkey[strlen(iaxs[callno]->outkey) - 1] = '\0'; } } else - strncpy(iaxs[callno]->secret, secret, sizeof(iaxs[callno]->secret)-1); + ast_copy_string(iaxs[callno]->secret, secret, sizeof(iaxs[callno]->secret)); } iax_ie_append_int(&ied, IAX_IE_FORMAT, c->nativeformats); iax_ie_append_int(&ied, IAX_IE_CAPABILITY, iaxs[callno]->capability); @@ -3206,7 +3206,7 @@ static int iax2_transfer(struct ast_channel *c, const char *dest) unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); struct iax_ie_data ied; char tmp[256] = "", *context; - strncpy(tmp, dest, sizeof(tmp) - 1); + ast_copy_string(tmp, dest, sizeof(tmp)); context = strchr(tmp, '@'); if (context) { *context = '\0'; @@ -3274,18 +3274,18 @@ static struct ast_channel *ast_iax2_new(int callno, int state, int capability) if (!ast_strlen_zero(i->ani)) tmp->cid.cid_ani = strdup(i->ani); if (!ast_strlen_zero(i->language)) - strncpy(tmp->language, i->language, sizeof(tmp->language)-1); + ast_copy_string(tmp->language, i->language, sizeof(tmp->language)); if (!ast_strlen_zero(i->dnid)) tmp->cid.cid_dnid = strdup(i->dnid); tmp->cid.cid_pres = i->calling_pres; tmp->cid.cid_ton = i->calling_ton; tmp->cid.cid_tns = i->calling_tns; if (!ast_strlen_zero(i->accountcode)) - strncpy(tmp->accountcode, i->accountcode, sizeof(tmp->accountcode)-1); + ast_copy_string(tmp->accountcode, i->accountcode, sizeof(tmp->accountcode)); if (i->amaflags) tmp->amaflags = i->amaflags; - strncpy(tmp->context, i->context, sizeof(tmp->context)-1); - strncpy(tmp->exten, i->exten, sizeof(tmp->exten)-1); + ast_copy_string(tmp->context, i->context, sizeof(tmp->context)); + ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten)); tmp->adsicpe = i->peeradsicpe; i->owner = tmp; i->capability = capability; @@ -3971,11 +3971,11 @@ static int iax2_show_users(int fd, int argc, char *argv[]) continue; if (!ast_strlen_zero(user->secret)) { - strncpy(auth,user->secret,sizeof(auth)-1); + ast_copy_string(auth,user->secret,sizeof(auth)); } else if (!ast_strlen_zero(user->inkeys)) { snprintf(auth, sizeof(auth), "Key: %-15.15s ", user->inkeys); } else - strncpy(auth, "-no secret-", sizeof(auth) - 1); + ast_copy_string(auth, "-no secret-", sizeof(auth)); if(ast_test_flag(user,IAX_CODEC_NOCAP)) pstr = "REQ Only"; @@ -4064,10 +4064,10 @@ static int iax2_show_peers(int fd, int argc, char *argv[]) if (!ast_strlen_zero(peer->username)) snprintf(name, sizeof(name), "%s/%s", peer->name, peer->username); else - strncpy(name, peer->name, sizeof(name) - 1); + ast_copy_string(name, peer->name, sizeof(name)); if (peer->maxms) { if (peer->lastms < 0) { - strncpy(status, "UNREACHABLE", sizeof(status) - 1); + ast_copy_string(status, "UNREACHABLE", sizeof(status)); offline_peers++; } else if (peer->lastms > peer->maxms) { @@ -4079,14 +4079,14 @@ static int iax2_show_peers(int fd, int argc, char *argv[]) online_peers++; } else { - strncpy(status, "UNKNOWN", sizeof(status) - 1); + ast_copy_string(status, "UNKNOWN", sizeof(status)); offline_peers++; } } else { - strncpy(status, "Unmonitored", sizeof(status) - 1); + ast_copy_string(status, "Unmonitored", sizeof(status)); unmonitored_peers++; } - strncpy(nm, ast_inet_ntoa(iabuf, sizeof(iabuf), peer->mask), sizeof(nm)-1); + ast_copy_string(nm, ast_inet_ntoa(iabuf, sizeof(iabuf), peer->mask), sizeof(nm)); snprintf(srch, sizeof(srch), FORMAT, name, peer->addr.sin_addr.s_addr ? ast_inet_ntoa(iabuf, sizeof(iabuf), peer->addr.sin_addr) : "(Unspecified)", @@ -4196,7 +4196,7 @@ static int iax2_show_registry(int fd, int argc, char *argv[]) if (reg->us.sin_addr.s_addr) snprintf(perceived, sizeof(perceived), "%s:%d", ast_inet_ntoa(iabuf, sizeof(iabuf), reg->us.sin_addr), ntohs(reg->us.sin_port)); else - strncpy(perceived, "", sizeof(perceived) - 1); + ast_copy_string(perceived, "", sizeof(perceived)); ast_cli(fd, FORMAT, host, reg->username, perceived, reg->refresh, regstate2str(reg->regstate)); } @@ -4585,23 +4585,23 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies if (!iaxs[callno]) return res; if (ies->called_number) - strncpy(iaxs[callno]->exten, ies->called_number, sizeof(iaxs[callno]->exten) - 1); + ast_copy_string(iaxs[callno]->exten, ies->called_number, sizeof(iaxs[callno]->exten)); 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); + ast_copy_string(iaxs[callno]->cid_num, ies->calling_number, sizeof(iaxs[callno]->cid_num)); } if (ies->calling_name) - strncpy(iaxs[callno]->cid_name, ies->calling_name, sizeof(iaxs[callno]->cid_name) - 1); + ast_copy_string(iaxs[callno]->cid_name, ies->calling_name, sizeof(iaxs[callno]->cid_name)); if (ies->calling_ani) - strncpy(iaxs[callno]->ani, ies->calling_ani, sizeof(iaxs[callno]->ani) - 1); + ast_copy_string(iaxs[callno]->ani, ies->calling_ani, sizeof(iaxs[callno]->ani)); if (ies->dnid) - strncpy(iaxs[callno]->dnid, ies->dnid, sizeof(iaxs[callno]->dnid)-1); + ast_copy_string(iaxs[callno]->dnid, ies->dnid, sizeof(iaxs[callno]->dnid)); if (ies->called_context) - strncpy(iaxs[callno]->context, ies->called_context, sizeof(iaxs[callno]->context)-1); + ast_copy_string(iaxs[callno]->context, ies->called_context, sizeof(iaxs[callno]->context)); if (ies->language) - strncpy(iaxs[callno]->language, ies->language, sizeof(iaxs[callno]->language)-1); + ast_copy_string(iaxs[callno]->language, ies->language, sizeof(iaxs[callno]->language)); if (ies->username) - strncpy(iaxs[callno]->username, ies->username, sizeof(iaxs[callno]->username)-1); + ast_copy_string(iaxs[callno]->username, ies->username, sizeof(iaxs[callno]->username)); if (ies->calling_ton > -1) iaxs[callno]->calling_ton = ies->calling_ton; if (ies->calling_tns > -1) @@ -4701,19 +4701,19 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies iaxs[callno]->encmethods = user->encmethods; /* Store the requested username if not specified */ if (ast_strlen_zero(iaxs[callno]->username)) - strncpy(iaxs[callno]->username, user->name, sizeof(iaxs[callno]->username)-1); + ast_copy_string(iaxs[callno]->username, user->name, sizeof(iaxs[callno]->username)); /* Store whether this is a trunked call, too, of course, and move if appropriate */ ast_copy_flags(iaxs[callno], user, IAX_TRUNK); iaxs[callno]->capability = user->capability; /* And use the default context */ if (ast_strlen_zero(iaxs[callno]->context)) { if (user->contexts) - strncpy(iaxs[callno]->context, user->contexts->context, sizeof(iaxs[callno]->context)-1); + ast_copy_string(iaxs[callno]->context, user->contexts->context, sizeof(iaxs[callno]->context)); else - strncpy(iaxs[callno]->context, context, sizeof(iaxs[callno]->context)-1); + ast_copy_string(iaxs[callno]->context, context, sizeof(iaxs[callno]->context)); } /* And any input keys */ - strncpy(iaxs[callno]->inkeys, user->inkeys, sizeof(iaxs[callno]->inkeys) - 1); + ast_copy_string(iaxs[callno]->inkeys, user->inkeys, sizeof(iaxs[callno]->inkeys)); /* And the permitted authentication methods */ iaxs[callno]->authmethods = user->authmethods; /* If they have callerid, override the given caller id. Always store the ANI */ @@ -4721,20 +4721,20 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies if (ast_test_flag(user, IAX_HASCALLERID)) { iaxs[callno]->calling_tns = 0; iaxs[callno]->calling_ton = 0; - strncpy(iaxs[callno]->cid_num, user->cid_num, sizeof(iaxs[callno]->cid_num)-1); - strncpy(iaxs[callno]->cid_name, user->cid_name, sizeof(iaxs[callno]->cid_name)-1); + ast_copy_string(iaxs[callno]->cid_num, user->cid_num, sizeof(iaxs[callno]->cid_num)); + ast_copy_string(iaxs[callno]->cid_name, user->cid_name, sizeof(iaxs[callno]->cid_name)); iaxs[callno]->calling_pres = AST_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN; } - strncpy(iaxs[callno]->ani, user->cid_num, sizeof(iaxs[callno]->ani)-1); + ast_copy_string(iaxs[callno]->ani, user->cid_num, sizeof(iaxs[callno]->ani)); } else { iaxs[callno]->calling_pres = AST_PRES_NUMBER_NOT_AVAILABLE; } if (!ast_strlen_zero(user->accountcode)) - strncpy(iaxs[callno]->accountcode, user->accountcode, sizeof(iaxs[callno]->accountcode)-1); + ast_copy_string(iaxs[callno]->accountcode, user->accountcode, sizeof(iaxs[callno]->accountcode)); if (user->amaflags) iaxs[callno]->amaflags = user->amaflags; if (!ast_strlen_zero(user->language)) - strncpy(iaxs[callno]->language, user->language, sizeof(iaxs[callno]->language)-1); + ast_copy_string(iaxs[callno]->language, user->language, sizeof(iaxs[callno]->language)); ast_copy_flags(iaxs[callno], user, IAX_NOTRANSFER | IAX_USEJITTERBUF | IAX_FORCEJITTERBUF); /* Keep this check last */ if (!ast_strlen_zero(user->dbsecret)) { @@ -4755,7 +4755,7 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies } } } else - strncpy(iaxs[callno]->secret, user->secret, sizeof(iaxs[callno]->secret) - 1); + ast_copy_string(iaxs[callno]->secret, user->secret, sizeof(iaxs[callno]->secret)); res = 0; } ast_set2_flag(iaxs[callno], iax2_getpeertrunk(*sin), IAX_TRUNK); @@ -4824,17 +4824,17 @@ static int authenticate_verify(struct chan_iax2_pvt *p, struct iax_ies *ies) if (!(p->state & IAX_STATE_AUTHENTICATED)) return res; if (ies->password) - strncpy(secret, ies->password, sizeof(secret) - 1); + ast_copy_string(secret, ies->password, sizeof(secret)); if (ies->md5_result) - strncpy(md5secret, ies->md5_result, sizeof(md5secret)-1); + ast_copy_string(md5secret, ies->md5_result, sizeof(md5secret)); if (ies->rsa_result) - strncpy(rsasecret, ies->rsa_result, sizeof(rsasecret)-1); + ast_copy_string(rsasecret, ies->rsa_result, sizeof(rsasecret)); if ((p->authmethods & IAX_AUTH_RSA) && !ast_strlen_zero(rsasecret) && !ast_strlen_zero(p->inkeys)) { struct ast_key *key; char *keyn; char tmpkey[256] = ""; char *stringp=NULL; - strncpy(tmpkey, p->inkeys, sizeof(tmpkey) - 1); + ast_copy_string(tmpkey, p->inkeys, sizeof(tmpkey)); stringp=tmpkey; keyn = strsep(&stringp, ":"); while(keyn) { @@ -4890,13 +4890,13 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies * iaxs[callno]->state &= ~IAX_STATE_AUTHENTICATED; iaxs[callno]->peer[0] = '\0'; if (ies->username) - strncpy(peer, ies->username, sizeof(peer) - 1); + ast_copy_string(peer, ies->username, sizeof(peer)); if (ies->password) - strncpy(secret, ies->password, sizeof(secret) - 1); + ast_copy_string(secret, ies->password, sizeof(secret)); if (ies->md5_result) - strncpy(md5secret, ies->md5_result, sizeof(md5secret)-1); + ast_copy_string(md5secret, ies->md5_result, sizeof(md5secret)); if (ies->rsa_result) - strncpy(rsasecret, ies->rsa_result, sizeof(rsasecret)-1); + ast_copy_string(rsasecret, ies->rsa_result, sizeof(rsasecret)); if (ies->refresh) expire = ies->refresh; @@ -4931,14 +4931,14 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies * destroy_peer(p); return -1; } - strncpy(iaxs[callno]->secret, p->secret, sizeof(iaxs[callno]->secret)-1); - strncpy(iaxs[callno]->inkeys, p->inkeys, sizeof(iaxs[callno]->inkeys)-1); + ast_copy_string(iaxs[callno]->secret, p->secret, sizeof(iaxs[callno]->secret)); + ast_copy_string(iaxs[callno]->inkeys, p->inkeys, sizeof(iaxs[callno]->inkeys)); /* Check secret against what we have on file */ if (!ast_strlen_zero(rsasecret) && (p->authmethods & IAX_AUTH_RSA) && !ast_strlen_zero(iaxs[callno]->challenge)) { if (!ast_strlen_zero(p->inkeys)) { char tmpkeys[256] = ""; char *stringp=NULL; - strncpy(tmpkeys, p->inkeys, sizeof(tmpkeys) - 1); + ast_copy_string(tmpkeys, p->inkeys, sizeof(tmpkeys)); stringp=tmpkeys; keyn = strsep(&stringp, ":"); while(keyn) { @@ -5007,7 +5007,7 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies * destroy_peer(p); return -1; } - strncpy(iaxs[callno]->peer, peer, sizeof(iaxs[callno]->peer)-1); + ast_copy_string(iaxs[callno]->peer, peer, sizeof(iaxs[callno]->peer)); /* Choose lowest expirey number */ if (expire && (expire < iaxs[callno]->expirey)) iaxs[callno]->expirey = expire; @@ -5085,9 +5085,9 @@ static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin, memset(&ied, 0, sizeof(ied)); if (ies->username) - strncpy(p->username, ies->username, sizeof(p->username) - 1); + ast_copy_string(p->username, ies->username, sizeof(p->username)); if (ies->challenge) - strncpy(p->challenge, ies->challenge, sizeof(p->challenge)-1); + ast_copy_string(p->challenge, ies->challenge, sizeof(p->challenge)); if (ies->authmethods) authmethods = ies->authmethods; if (authmethods & IAX_AUTH_MD5) @@ -5174,7 +5174,7 @@ static int complete_dpreply(struct chan_iax2_pvt *pvt, struct iax_ies *ies) struct iax2_dpcache *dp, *prev; if (ies->called_number) - strncpy(exten, ies->called_number, sizeof(exten)-1); + ast_copy_string(exten, ies->called_number, sizeof(exten)); if (ies->dpstatus & IAX_DPSTATUS_EXISTS) status = CACHE_FLAG_EXISTS; @@ -5296,7 +5296,7 @@ static int iax2_ack_registry(struct iax_ies *ies, struct sockaddr_in *sin, int c if (ies->apparent_addr) memcpy(&us, ies->apparent_addr, sizeof(us)); if (ies->username) - strncpy(peer, ies->username, sizeof(peer) - 1); + ast_copy_string(peer, ies->username, sizeof(peer)); if (ies->refresh) refresh = ies->refresh; if (ies->calling_number) { @@ -5350,7 +5350,7 @@ static int iax2_register(char *value, int lineno) struct ast_hostent ahp; struct hostent *hp; if (!value) return -1; - strncpy(copy, value, sizeof(copy)-1); + ast_copy_string(copy, value, sizeof(copy)); stringp=copy; username = strsep(&stringp, "@"); hostname = strsep(&stringp, "@"); @@ -5377,9 +5377,9 @@ static int iax2_register(char *value, int lineno) reg = malloc(sizeof(struct iax2_registry)); if (reg) { memset(reg, 0, sizeof(struct iax2_registry)); - strncpy(reg->username, username, sizeof(reg->username)-1); + ast_copy_string(reg->username, username, sizeof(reg->username)); if (secret) - strncpy(reg->secret, secret, sizeof(reg->secret)-1); + ast_copy_string(reg->secret, secret, sizeof(reg->secret)); reg->expire = -1; reg->refresh = IAX_DEFAULT_REG_EXPIRE; reg->addr.sin_family = AF_INET; @@ -5400,7 +5400,7 @@ static void register_peer_exten(struct iax2_peer *peer, int onoff) unsigned char multi[256]=""; char *stringp, *ext; if (!ast_strlen_zero(regcontext)) { - strncpy(multi, ast_strlen_zero(peer->regexten) ? peer->name : peer->regexten, sizeof(multi) - 1); + ast_copy_string(multi, ast_strlen_zero(peer->regexten) ? peer->name : peer->regexten, sizeof(multi)); stringp = multi; while((ext = strsep(&stringp, "&"))) { if (onoff) { @@ -5598,9 +5598,9 @@ static int registry_rerequest(struct iax_ies *ies, int callno, struct sockaddr_i if (ies->authmethods) authmethods = ies->authmethods; if (ies->username) - strncpy(peer, ies->username, sizeof(peer) - 1); + ast_copy_string(peer, ies->username, sizeof(peer)); if (ies->challenge) - strncpy(challenge, ies->challenge, sizeof(challenge) - 1); + ast_copy_string(challenge, ies->challenge, sizeof(challenge)); memset(&ied, 0, sizeof(ied)); reg = iaxs[callno]->reg; if (reg) { @@ -5617,7 +5617,7 @@ static int registry_rerequest(struct iax_ies *ies, int callno, struct sockaddr_i iax_ie_append_short(&ied, IAX_IE_REFRESH, reg->refresh); if (reg->secret[0] == '[') { char tmpkey[256]; - strncpy(tmpkey, reg->secret + 1, sizeof(tmpkey) - 1); + ast_copy_string(tmpkey, reg->secret + 1, sizeof(tmpkey)); tmpkey[strlen(tmpkey) - 1] = '\0'; res = authenticate(challenge, NULL, tmpkey, authmethods, &ied, sin, NULL, NULL); } else @@ -5943,8 +5943,8 @@ static void spawn_dp_lookup(int callno, char *context, char *callednum, char *ca if (dpr) { memset(dpr, 0, sizeof(struct dpreq_data)); dpr->callno = callno; - strncpy(dpr->context, context, sizeof(dpr->context) - 1); - strncpy(dpr->callednum, callednum, sizeof(dpr->callednum) - 1); + ast_copy_string(dpr->context, context, sizeof(dpr->context)); + ast_copy_string(dpr->callednum, callednum, sizeof(dpr->callednum)); if (callerid) dpr->callerid = strdup(callerid); if (ast_pthread_create(&newthread, NULL, dp_lookup_thread, dpr)) { @@ -5993,8 +5993,8 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2) chan1m->writeformat = chan1->writeformat; ast_channel_masquerade(chan1m, chan1); /* Setup the extensions and such */ - strncpy(chan1m->context, chan1->context, sizeof(chan1m->context) - 1); - strncpy(chan1m->exten, chan1->exten, sizeof(chan1m->exten) - 1); + ast_copy_string(chan1m->context, chan1->context, sizeof(chan1m->context)); + ast_copy_string(chan1m->exten, chan1->exten, sizeof(chan1m->exten)); chan1m->priority = chan1->priority; /* We make a clone of the peer channel too, so we can play @@ -6005,8 +6005,8 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2) chan2m->writeformat = chan2->writeformat; ast_channel_masquerade(chan2m, chan2); /* Setup the extensions and such */ - strncpy(chan2m->context, chan2->context, sizeof(chan2m->context) - 1); - strncpy(chan2m->exten, chan2->exten, sizeof(chan2m->exten) - 1); + ast_copy_string(chan2m->context, chan2->context, sizeof(chan2m->context)); + ast_copy_string(chan2m->exten, chan2->exten, sizeof(chan2m->exten)); chan2m->priority = chan2->priority; if (ast_do_masquerade(chan2m)) { ast_log(LOG_WARNING, "Masquerade failed :(\n"); @@ -7130,7 +7130,7 @@ retryowner2: case IAX_COMMAND_DIAL: if (iaxs[fr.callno]->state & IAX_STATE_TBD) { iaxs[fr.callno]->state &= ~IAX_STATE_TBD; - strncpy(iaxs[fr.callno]->exten, ies.called_number ? ies.called_number : "s", sizeof(iaxs[fr.callno]->exten)-1); + ast_copy_string(iaxs[fr.callno]->exten, ies.called_number ? ies.called_number : "s", sizeof(iaxs[fr.callno]->exten)); if (!ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num)) { if (authdebug) ast_log(LOG_NOTICE, "Rejected dial attempt from %s, request '%s@%s' does not exist\n", ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr), iaxs[fr.callno]->exten, iaxs[fr.callno]->context); @@ -7632,7 +7632,7 @@ static struct ast_channel *iax2_request(const char *type, int format, void *data int usejitterbuf = ast_test_flag((&globalflags), IAX_USEJITTERBUF); int forcejitterbuf = ast_test_flag((&globalflags), IAX_FORCEJITTERBUF); - strncpy(s, (char *)data, sizeof(s)-1); + ast_copy_string(s, (char *)data, sizeof(s)); /* FIXME The next two lines seem useless */ stringp=s; strsep(&stringp, "/"); @@ -7678,7 +7678,7 @@ static struct ast_channel *iax2_request(const char *type, int format, void *data ast_set2_flag(iaxs[callno], usejitterbuf, IAX_USEJITTERBUF); ast_set2_flag(iaxs[callno], forcejitterbuf, IAX_FORCEJITTERBUF); if (found) - strncpy(iaxs[callno]->host, hostname, sizeof(iaxs[callno]->host) - 1); + ast_copy_string(iaxs[callno]->host, hostname, sizeof(iaxs[callno]->host)); c = ast_iax2_new(callno, AST_STATE_DOWN, capability); ast_mutex_unlock(&iaxsl[callno]); if (c) { @@ -7767,7 +7767,7 @@ static struct iax2_context *build_context(char *context) { struct iax2_context *con = malloc(sizeof(struct iax2_context)); if (con) { - strncpy(con->context, context, sizeof(con->context)-1); + ast_copy_string(con->context, context, sizeof(con->context)); con->next = NULL; } return con; @@ -7833,7 +7833,7 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in peer->encmethods = iax2_encryption; peer->secret[0] = '\0'; if (!found) { - strncpy(peer->name, name, sizeof(peer->name)-1); + ast_copy_string(peer->name, name, sizeof(peer->name)); peer->addr.sin_port = htons(IAX_DEFAULT_PORTNO); peer->expirey = expirey; } @@ -7845,11 +7845,11 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in strncpy(peer->secret + strlen(peer->secret), ";", sizeof(peer->secret)-strlen(peer->secret) - 1); strncpy(peer->secret + strlen(peer->secret), v->value, sizeof(peer->secret)-strlen(peer->secret) - 1); } else - strncpy(peer->secret, v->value, sizeof(peer->secret)-1); + ast_copy_string(peer->secret, v->value, sizeof(peer->secret)); } else if (!strcasecmp(v->name, "mailbox")) { - strncpy(peer->mailbox, v->value, sizeof(peer->mailbox) - 1); + ast_copy_string(peer->mailbox, v->value, sizeof(peer->mailbox)); } else if (!strcasecmp(v->name, "dbsecret")) - strncpy(peer->dbsecret, v->value, sizeof(peer->dbsecret)-1); + ast_copy_string(peer->dbsecret, v->value, sizeof(peer->dbsecret)); else if (!strcasecmp(v->name, "mailboxdetail")) ast_set2_flag(peer, ast_true(v->value), IAX_MESSAGEDETAIL); else if (!strcasecmp(v->name, "trunktimestamps")) @@ -7910,19 +7910,19 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in inet_aton(v->value, &peer->mask); } else if (!strcasecmp(v->name, "context")) { if (ast_strlen_zero(peer->context)) - strncpy(peer->context, v->value, sizeof(peer->context) - 1); + ast_copy_string(peer->context, v->value, sizeof(peer->context)); } else if (!strcasecmp(v->name, "regexten")) { - strncpy(peer->regexten, v->value, sizeof(peer->regexten) - 1); + ast_copy_string(peer->regexten, v->value, sizeof(peer->regexten)); } else if (!strcasecmp(v->name, "peercontext")) { if (ast_strlen_zero(peer->peercontext)) - strncpy(peer->peercontext, v->value, sizeof(peer->peercontext) - 1); + ast_copy_string(peer->peercontext, v->value, sizeof(peer->peercontext)); } else if (!strcasecmp(v->name, "port")) { if (ast_test_flag(peer, IAX_DYNAMIC)) peer->defaddr.sin_port = htons(atoi(v->value)); else peer->addr.sin_port = htons(atoi(v->value)); } else if (!strcasecmp(v->name, "username")) { - strncpy(peer->username, v->value, sizeof(peer->username)-1); + ast_copy_string(peer->username, v->value, sizeof(peer->username)); } else if (!strcasecmp(v->name, "allow")) { ast_parse_allow_disallow(&peer->prefs, &peer->capability, v->value, 1); } else if (!strcasecmp(v->name, "disallow")) { @@ -7934,9 +7934,9 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in } else if (!strcasecmp(v->name, "sendani")) { ast_set2_flag(peer, ast_true(v->value), IAX_SENDANI); } else if (!strcasecmp(v->name, "inkeys")) { - strncpy(peer->inkeys, v->value, sizeof(peer->inkeys) - 1); + ast_copy_string(peer->inkeys, v->value, sizeof(peer->inkeys)); } else if (!strcasecmp(v->name, "outkey")) { - strncpy(peer->outkey, v->value, sizeof(peer->outkey) - 1); + ast_copy_string(peer->outkey, v->value, sizeof(peer->outkey)); } else if (!strcasecmp(v->name, "qualify")) { if (!strcasecmp(v->value, "no")) { peer->maxms = 0; @@ -7947,7 +7947,7 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in peer->maxms = 0; } } else if (!strcasecmp(v->name, "timezone")) { - strncpy(peer->zonetag, v->value, sizeof(peer->zonetag)-1); + ast_copy_string(peer->zonetag, v->value, sizeof(peer->zonetag)); }/* else if (strcasecmp(v->name,"type")) */ /* ast_log(LOG_WARNING, "Ignoring %s\n", v->name); */ v=v->next; @@ -8015,8 +8015,8 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in user->prefs = prefs; user->capability = iax2_capability; user->encmethods = iax2_encryption; - strncpy(user->name, name, sizeof(user->name)-1); - strncpy(user->language, language, sizeof(user->language) - 1); + ast_copy_string(user->name, name, sizeof(user->name)); + ast_copy_string(user->language, language, sizeof(user->language)); ast_copy_flags(user, (&globalflags), IAX_USEJITTERBUF); ast_copy_flags(user, (&globalflags), IAX_FORCEJITTERBUF); ast_copy_flags(user, (&globalflags), IAX_CODEC_USER_FIRST); @@ -8075,20 +8075,20 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in } else if (!strcasecmp(v->name, "forcejitterbuffer")) { ast_set2_flag(user, ast_true(v->value), IAX_FORCEJITTERBUF); } else if (!strcasecmp(v->name, "dbsecret")) { - strncpy(user->dbsecret, v->value, sizeof(user->dbsecret)-1); + ast_copy_string(user->dbsecret, v->value, sizeof(user->dbsecret)); } else if (!strcasecmp(v->name, "secret")) { if (!ast_strlen_zero(user->secret)) { strncpy(user->secret + strlen(user->secret), ";", sizeof(user->secret) - strlen(user->secret) - 1); strncpy(user->secret + strlen(user->secret), v->value, sizeof(user->secret) - strlen(user->secret) - 1); } else - strncpy(user->secret, v->value, sizeof(user->secret)-1); + ast_copy_string(user->secret, v->value, sizeof(user->secret)); } else if (!strcasecmp(v->name, "callerid")) { ast_callerid_split(v->value, user->cid_name, sizeof(user->cid_name), user->cid_num, sizeof(user->cid_num)); ast_set_flag(user, IAX_HASCALLERID); } else if (!strcasecmp(v->name, "accountcode")) { - strncpy(user->accountcode, v->value, sizeof(user->accountcode)-1); + ast_copy_string(user->accountcode, v->value, sizeof(user->accountcode)); } else if (!strcasecmp(v->name, "language")) { - strncpy(user->language, v->value, sizeof(user->language)-1); + ast_copy_string(user->language, v->value, sizeof(user->language)); } else if (!strcasecmp(v->name, "amaflags")) { format = ast_cdr_amaflags2int(v->value); if (format < 0) { @@ -8097,7 +8097,7 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in user->amaflags = format; } } else if (!strcasecmp(v->name, "inkeys")) { - strncpy(user->inkeys, v->value, sizeof(user->inkeys) - 1); + ast_copy_string(user->inkeys, v->value, sizeof(user->inkeys)); }/* else if (strcasecmp(v->name,"type")) */ /* ast_log(LOG_WARNING, "Ignoring %s\n", v->name); */ v = v->next; @@ -8398,7 +8398,7 @@ static int set_config(char *config_file, int reload) } else if (!strcasecmp(v->name, "iaxcompat")) { iaxcompat = ast_true(v->value); } else if (!strcasecmp(v->name, "regcontext")) { - strncpy(regcontext, v->value, sizeof(regcontext) - 1); + ast_copy_string(regcontext, v->value, sizeof(regcontext)); /* Create context if it doesn't exist already */ if (!ast_context_find(regcontext)) ast_context_create(NULL, regcontext, channeltype); @@ -8418,7 +8418,7 @@ static int set_config(char *config_file, int reload) else ast_log(LOG_WARNING, "Invalid tos value at line %d, should be 'lowdelay', 'throughput', 'reliability', 'mincost', or 'none'\n", v->lineno); } else if (!strcasecmp(v->name, "accountcode")) { - strncpy(accountcode, v->value, sizeof(accountcode)-1); + ast_copy_string(accountcode, v->value, sizeof(accountcode)); } else if (!strcasecmp(v->name, "amaflags")) { format = ast_cdr_amaflags2int(v->value); if (format < 0) { @@ -8427,7 +8427,7 @@ static int set_config(char *config_file, int reload) amaflags = format; } } else if (!strcasecmp(v->name, "language")) { - strncpy(language, v->value, sizeof(language) - 1); + ast_copy_string(language, v->value, sizeof(language)); } /*else if (strcasecmp(v->name,"type")) */ /* ast_log(LOG_WARNING, "Ignoring %s\n", v->name); */ v = v->next; @@ -8473,8 +8473,8 @@ static int reload_config(void) char *config = "iax.conf"; struct iax2_registry *reg; struct iax2_peer *peer; - strncpy(accountcode, "", sizeof(accountcode)-1); - strncpy(language, "", sizeof(language)-1); + ast_copy_string(accountcode, "", sizeof(accountcode)); + ast_copy_string(language, "", sizeof(language)); amaflags = 0; delayreject = 0; ast_clear_flag((&globalflags), IAX_NOTRANSFER); @@ -8530,7 +8530,7 @@ static int cache_get_callno_locked(const char *data) } memset(&ied, 0, sizeof(ied)); /* No match found, we need to create a new one */ - strncpy(st, data, sizeof(st)-1); + ast_copy_string(st, data, sizeof(st)); /* Grab the host */ s = strchr(st, '/'); if (s) { @@ -8565,7 +8565,7 @@ static int cache_get_callno_locked(const char *data) return -1; } ast_mutex_lock(&iaxsl[callno]); - strncpy(iaxs[callno]->dproot, data, sizeof(iaxs[callno]->dproot)-1); + ast_copy_string(iaxs[callno]->dproot, data, sizeof(iaxs[callno]->dproot)); iaxs[callno]->capability = IAX_CAPABILITY_FULLBANDWIDTH; iax_ie_append_short(&ied, IAX_IE_VERSION, IAX_PROTO_VERSION); @@ -8578,7 +8578,7 @@ static int cache_get_callno_locked(const char *data) iax_ie_append_int(&ied, IAX_IE_CAPABILITY, IAX_CAPABILITY_FULLBANDWIDTH); /* Keep password handy */ if (password) - strncpy(iaxs[callno]->secret, password, sizeof(iaxs[callno]->secret)-1); + ast_copy_string(iaxs[callno]->secret, password, sizeof(iaxs[callno]->secret)); #if 0 /* XXX Need equivalent XXX */ if (option_verbose > 2) @@ -8643,8 +8643,8 @@ static struct iax2_dpcache *find_cache(struct ast_channel *chan, const char *dat return NULL; } memset(dp, 0, sizeof(struct iax2_dpcache)); - strncpy(dp->peercontext, data, sizeof(dp->peercontext)-1); - strncpy(dp->exten, exten, sizeof(dp->exten)-1); + ast_copy_string(dp->peercontext, data, sizeof(dp->peercontext)); + ast_copy_string(dp->exten, exten, sizeof(dp->exten)); gettimeofday(&dp->expirey, NULL); dp->orig = dp->expirey; /* Expires in 30 mins by default */ @@ -8835,7 +8835,7 @@ static int iax2_exec(struct ast_channel *chan, const char *context, const char * dp = find_cache(chan, data, context, exten, priority); if (dp) { if (dp->flags & CACHE_FLAG_EXISTS) { - strncpy(odata, data, sizeof(odata)-1); + ast_copy_string(odata, data, sizeof(odata)); ncontext = strchr(odata, '/'); if (ncontext) { *ncontext = '\0'; @@ -8872,7 +8872,7 @@ static int iax2_devicestate(void *data) char tmp[256] = ""; int res = AST_DEVICE_INVALID; - strncpy(tmp, dest, sizeof(tmp) - 1); + ast_copy_string(tmp, dest, sizeof(tmp)); host = strchr(tmp, '@'); if (host) { *host = '\0'; -- cgit v1.2.3