From 749029de38e8b8c02172912917e2642b8c96547c Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Wed, 25 Oct 2006 14:44:50 +0000 Subject: Merged revisions 46200 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r46200 | kpfleming | 2006-10-25 09:32:08 -0500 (Wed, 25 Oct 2006) | 2 lines apparently developers are still not aware that they should be use ast_copy_string instead of strncpy... fix up many more users, and fix some bugs in the process ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_alsa.c | 6 ++-- channels/chan_features.c | 4 +-- channels/chan_h323.c | 85 ++++++++++++++++++++++++------------------------ channels/chan_iax2.c | 8 ++--- channels/chan_mgcp.c | 47 +++++++++++++------------- channels/chan_nbs.c | 10 +++--- channels/chan_phone.c | 26 +++++++-------- channels/chan_sip.c | 8 ++--- 8 files changed, 95 insertions(+), 99 deletions(-) (limited to 'channels') diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 343eb035b..ad49e9bb0 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -1042,7 +1042,7 @@ static int console_dial(int fd, int argc, char *argv[]) myc = context; if (argc == 3) { char *stringp = NULL; - strncpy(tmp, argv[2], sizeof(tmp) - 1); + ast_copy_string(tmp, argv[2], sizeof(tmp)); stringp = tmp; strsep(&stringp, "@"); tmp2 = strsep(&stringp, "@"); @@ -1052,8 +1052,8 @@ static int console_dial(int fd, int argc, char *argv[]) myc = tmp2; } if (ast_exists_extension(NULL, myc, mye, 1, NULL)) { - strncpy(alsa.exten, mye, sizeof(alsa.exten) - 1); - strncpy(alsa.context, myc, sizeof(alsa.context) - 1); + ast_copy_string(alsa.exten, mye, sizeof(alsa.exten)); + ast_copy_string(alsa.context, myc, sizeof(alsa.context)); hookstate = 1; alsa_new(&alsa, AST_STATE_RINGING); } else diff --git a/channels/chan_features.c b/channels/chan_features.c index 3ed41ba76..f83225109 100644 --- a/channels/chan_features.c +++ b/channels/chan_features.c @@ -437,8 +437,8 @@ static struct feature_pvt *features_alloc(char *data, int format) for (x=0;x<3;x++) init_sub(tmp->subs + x); ast_mutex_init(&tmp->lock); - strncpy(tmp->tech, tech, sizeof(tmp->tech) - 1); - strncpy(tmp->dest, dest, sizeof(tmp->dest) - 1); + ast_copy_string(tmp->tech, tech, sizeof(tmp->tech)); + ast_copy_string(tmp->dest, dest, sizeof(tmp->dest)); tmp->subchan = chan; AST_LIST_LOCK(&features); AST_LIST_INSERT_HEAD(&features, tmp, list); diff --git a/channels/chan_h323.c b/channels/chan_h323.c index ffb86b0d7..d8d2ce3f2 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -604,7 +604,7 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout) ast_mutex_lock(&pvt->lock); if (!gatekeeper_disable) { if (ast_strlen_zero(pvt->exten)) { - strncpy(called_addr, dest, sizeof(called_addr)); + ast_copy_string(called_addr, dest, sizeof(called_addr)); } else { snprintf(called_addr, sizeof(called_addr), "%s@%s", pvt->exten, dest); } @@ -621,13 +621,13 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout) called_addr[sizeof(called_addr) - 1] = '\0'; if (c->cid.cid_num) - strncpy(pvt->options.cid_num, c->cid.cid_num, sizeof(pvt->options.cid_num)); + ast_copy_string(pvt->options.cid_num, c->cid.cid_num, sizeof(pvt->options.cid_num)); if (c->cid.cid_name) - strncpy(pvt->options.cid_name, c->cid.cid_name, sizeof(pvt->options.cid_name)); + ast_copy_string(pvt->options.cid_name, c->cid.cid_name, sizeof(pvt->options.cid_name)); if (c->cid.cid_rdnis) { - strncpy(pvt->options.cid_rdnis, c->cid.cid_rdnis, sizeof(pvt->options.cid_rdnis)); + ast_copy_string(pvt->options.cid_rdnis, c->cid.cid_rdnis, sizeof(pvt->options.cid_rdnis)); } pvt->options.presentation = c->cid.cid_pres; @@ -1054,8 +1054,8 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c /* Set the owner of this channel */ pvt->owner = ch; - strncpy(ch->context, pvt->context, sizeof(ch->context) - 1); - strncpy(ch->exten, pvt->exten, sizeof(ch->exten) - 1); + ast_copy_string(ch->context, pvt->context, sizeof(ch->context)); + ast_copy_string(ch->exten, pvt->exten, sizeof(ch->exten)); ch->priority = 1; if (!ast_strlen_zero(pvt->accountcode)) { ast_string_field_set(ch, accountcode, pvt->accountcode); @@ -1136,7 +1136,7 @@ static struct oh323_pvt *oh323_alloc(int callid) } else { pvt->nonCodecCapability &= ~AST_RTP_DTMF; } - strncpy(pvt->context, default_context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->context, default_context, sizeof(pvt->context)); pvt->newstate = pvt->newcontrol = pvt->newdigit = pvt->update_rtp_info = pvt->DTMFsched = -1; ast_mutex_init(&pvt->lock); /* Add to interface list */ @@ -1209,16 +1209,16 @@ static struct oh323_alias *build_alias(const char *name, struct ast_variable *v, ASTOBJ_INIT(alias); } if (!found && name) - strncpy(alias->name, name, sizeof(alias->name) - 1); + ast_copy_string(alias->name, name, sizeof(alias->name)); for (; v || ((v = alt) && !(alt = NULL)); v = v->next) { if (!strcasecmp(v->name, "e164")) { - strncpy(alias->e164, v->value, sizeof(alias->e164) - 1); + ast_copy_string(alias->e164, v->value, sizeof(alias->e164)); } else if (!strcasecmp(v->name, "prefix")) { - strncpy(alias->prefix, v->value, sizeof(alias->prefix) - 1); + ast_copy_string(alias->prefix, v->value, sizeof(alias->prefix)); } else if (!strcasecmp(v->name, "context")) { - strncpy(alias->context, v->value, sizeof(alias->context) - 1); + ast_copy_string(alias->context, v->value, sizeof(alias->context)); } else if (!strcasecmp(v->name, "secret")) { - strncpy(alias->secret, v->value, sizeof(alias->secret) - 1); + ast_copy_string(alias->secret, v->value, sizeof(alias->secret)); } else { if (strcasecmp(v->value, "h323")) { ast_log(LOG_WARNING, "Keyword %s does not make sense in type=h323\n", v->name); @@ -1383,9 +1383,9 @@ static struct oh323_user *build_user(char *name, struct ast_variable *v, struct user->options.dtmfmode = 0; user->options.holdHandling = 0; /* Set default context */ - strncpy(user->context, default_context, sizeof(user->context) - 1); + ast_copy_string(user->context, default_context, sizeof(user->context)); if (user && !found) - strncpy(user->name, name, sizeof(user->name) - 1); + ast_copy_string(user->name, name, sizeof(user->name)); #if 0 /* XXX Port channel variables functionality from chan_sip XXX */ if (user->chanvars) { @@ -1398,11 +1398,11 @@ static struct oh323_user *build_user(char *name, struct ast_variable *v, struct if (!update_common_options(v, &user->options)) continue; if (!strcasecmp(v->name, "context")) { - strncpy(user->context, v->value, sizeof(user->context) - 1); + ast_copy_string(user->context, v->value, sizeof(user->context)); } else if (!strcasecmp(v->name, "secret")) { - strncpy(user->secret, v->value, sizeof(user->secret) - 1); + ast_copy_string(user->secret, v->value, sizeof(user->secret)); } 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, "host")) { if (!strcasecmp(v->value, "dynamic")) { ast_log(LOG_ERROR, "A dynamic host on a type=user does not make any sense\n"); @@ -1498,7 +1498,7 @@ static struct oh323_peer *build_peer(const char *name, struct ast_variable *v, s peer->addr.sin_port = htons(h323_signalling_port); peer->addr.sin_family = AF_INET; if (!found && name) - strncpy(peer->name, name, sizeof(peer->name) - 1); + ast_copy_string(peer->name, name, sizeof(peer->name)); #if 0 /* XXX Port channel variables functionality from chan_sip XXX */ if (peer->chanvars) { @@ -1650,7 +1650,7 @@ static int create_addr(struct oh323_pvt *pvt, char *opeer) char *hostn; char peer[256] = ""; - strncpy(peer, opeer, sizeof(peer) - 1); + ast_copy_string(peer, opeer, sizeof(peer)); port = strchr(peer, ':'); if (port) { *port = '\0'; @@ -1738,7 +1738,7 @@ static struct ast_channel *oh323_request(const char *type, int format, void *dat *cause = AST_CAUSE_INCOMPATIBLE_DESTINATION; return NULL; } - strncpy(tmp, dest, sizeof(tmp) - 1); + ast_copy_string(tmp, dest, sizeof(tmp)); host = strchr(tmp, '@'); if (host) { *host = '\0'; @@ -1755,7 +1755,7 @@ static struct ast_channel *oh323_request(const char *type, int format, void *dat h323_set_id(h323id); } if (ext) { - strncpy(pvt->exten, ext, sizeof(pvt->exten) - 1); + ast_copy_string(pvt->exten, ext, sizeof(pvt->exten)); } if (h323debug) ast_log(LOG_DEBUG, "Extension: %s Host: %s\n", pvt->exten, host); @@ -1906,8 +1906,7 @@ static struct rtp_info *external_rtp_create(unsigned call_reference, const char ast_rtp_get_us(pvt->rtp, &us); ast_mutex_unlock(&pvt->lock); - strncpy(info->addr, ast_inet_ntoa(us.sin_addr), sizeof(info->addr)); - info->addr[sizeof(info->addr)-1] = '\0'; + ast_copy_string(info->addr, ast_inet_ntoa(us.sin_addr), sizeof(info->addr)); info->port = ntohs(us.sin_port); if (h323debug) ast_log(LOG_DEBUG, "Sending RTP 'US' %s:%d\n", info->addr, info->port); @@ -2129,8 +2128,8 @@ static call_options_t *setup_incoming_call(call_details_t *cd) /* Decide if we are allowing Gatekeeper routed calls*/ if ((!strcasecmp(cd->sourceIp, gatekeeper)) && (gkroute == -1) && !gatekeeper_disable) { if (!ast_strlen_zero(cd->call_dest_e164)) { - strncpy(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten) - 1); - strncpy(pvt->context, default_context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten)); + ast_copy_string(pvt->context, default_context, sizeof(pvt->context)); } else { alias = find_alias(cd->call_dest_alias, 1); if (!alias) { @@ -2138,8 +2137,8 @@ static call_options_t *setup_incoming_call(call_details_t *cd) oh323_destroy(pvt); return NULL; } - strncpy(pvt->exten, alias->name, sizeof(pvt->exten) - 1); - strncpy(pvt->context, alias->context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->exten, alias->name, sizeof(pvt->exten)); + ast_copy_string(pvt->context, alias->context, sizeof(pvt->context)); } } else { /* Either this call is not from the Gatekeeper @@ -2156,11 +2155,11 @@ static call_options_t *setup_incoming_call(call_details_t *cd) oh323_destroy(pvt); return NULL; } - strncpy(pvt->context, default_context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->context, default_context, sizeof(pvt->context)); if (!ast_strlen_zero(pvt->cd.call_dest_e164)) { - strncpy(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten) - 1); + ast_copy_string(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten)); } else { - strncpy(pvt->exten, cd->call_dest_alias, sizeof(pvt->exten) - 1); + ast_copy_string(pvt->exten, cd->call_dest_alias, sizeof(pvt->exten)); } if (h323debug) ast_log(LOG_DEBUG, "Sending %s@%s to context [%s] extension %s\n", cd->call_source_aliases, cd->sourceIp, pvt->context, pvt->exten); @@ -2174,9 +2173,9 @@ static call_options_t *setup_incoming_call(call_details_t *cd) ASTOBJ_UNREF(user, oh323_destroy_user); return NULL; } - strncpy(pvt->context, default_context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->context, default_context, sizeof(pvt->context)); } else { - strncpy(pvt->context, user->context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->context, user->context, sizeof(pvt->context)); } pvt->exten[0] = 'i'; pvt->exten[1] = '\0'; @@ -2186,16 +2185,16 @@ static call_options_t *setup_incoming_call(call_details_t *cd) return NULL; /* XXX: Hmmm... Why to setup context if we drop connection immediately??? */ } } - strncpy(pvt->context, user->context, sizeof(pvt->context) - 1); + ast_copy_string(pvt->context, user->context, sizeof(pvt->context)); memcpy(&pvt->options, &user->options, sizeof(pvt->options)); pvt->jointcapability = pvt->options.capability; if (!ast_strlen_zero(pvt->cd.call_dest_e164)) { - strncpy(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten) - 1); + ast_copy_string(pvt->exten, cd->call_dest_e164, sizeof(pvt->exten)); } else { - strncpy(pvt->exten, cd->call_dest_alias, sizeof(pvt->exten) - 1); + ast_copy_string(pvt->exten, cd->call_dest_alias, sizeof(pvt->exten)); } if (!ast_strlen_zero(user->accountcode)) { - strncpy(pvt->accountcode, user->accountcode, sizeof(pvt->accountcode) - 1); + ast_copy_string(pvt->accountcode, user->accountcode, sizeof(pvt->accountcode)); } if (user->amaflags) { pvt->amaflags = user->amaflags; @@ -2228,7 +2227,7 @@ static int answer_call(unsigned call_reference, const char *token) return 0; } /* Check if requested extension@context pair exists in the dialplan */ - strncpy(tmp_exten, pvt->exten, sizeof(tmp_exten)); + ast_copy_string(tmp_exten, pvt->exten, sizeof(tmp_exten)); /* Try to find best extension in specified context */ if ((tmp_exten[0] != '\0') && (tmp_exten[1] == '\0')) { @@ -2270,7 +2269,7 @@ static int answer_call(unsigned call_reference, const char *token) } else if ((try_exten != ext_original) && (strcmp(pvt->exten, tmp_exten) != 0)) { if (h323debug) ast_log(LOG_DEBUG, "Going to extension %s@%s because %s@%s isn't exists\n", tmp_exten, pvt->context, pvt->exten, pvt->context); - strncpy(pvt->exten, tmp_exten, sizeof(pvt->exten)); + ast_copy_string(pvt->exten, tmp_exten, sizeof(pvt->exten)); } /* allocate a channel and tell asterisk about it */ @@ -2810,7 +2809,7 @@ static int reload_config(int is_reload) if (!h323_end_point_exist()) { h323_end_point_create(); } - strncpy(_gatekeeper, gatekeeper, sizeof(_gatekeeper)); + ast_copy_string(_gatekeeper, gatekeeper, sizeof(_gatekeeper)); gk_discover = gatekeeper_discover; gk_disable = gatekeeper_disable; memset(&bindaddr, 0, sizeof(bindaddr)); @@ -2823,7 +2822,7 @@ static int reload_config(int is_reload) global_options.holdHandling = 0; global_options.capability = GLOBAL_CAPABILITY; global_options.bridge = 1; /* Do native bridging by default */ - strncpy(default_context, "default", sizeof(default_context) - 1); + strcpy(default_context, "default"); h323_signalling_port = 1720; gatekeeper_disable = 1; gatekeeper_discover = 0; @@ -2896,14 +2895,14 @@ static int reload_config(int is_reload) gatekeeper_discover = 1; } else { gatekeeper_disable = 0; - strncpy(gatekeeper, v->value, sizeof(gatekeeper) - 1); + ast_copy_string(gatekeeper, v->value, sizeof(gatekeeper)); } } else if (!strcasecmp(v->name, "secret")) { - strncpy(secret, v->value, sizeof(secret) - 1); + ast_copy_string(secret, v->value, sizeof(secret)); } else if (!strcasecmp(v->name, "AllowGKRouted")) { gkroute = ast_true(v->value); } else if (!strcasecmp(v->name, "context")) { - strncpy(default_context, v->value, sizeof(default_context) - 1); + ast_copy_string(default_context, v->value, sizeof(default_context)); ast_verbose(VERBOSE_PREFIX_2 "Setting default context to %s\n", default_context); } else if (!strcasecmp(v->name, "UserByAlias")) { userbyalias = ast_true(v->value); diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index f42640b6f..30ea88dbb 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -8594,11 +8594,9 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, st ast_string_field_set(user, dbsecret, v->value); } else if (!strcasecmp(v->name, "secret")) { if (!ast_strlen_zero(user->secret)) { - char buf99[100]; - strncpy(buf99,user->secret,100); /* just in case some weirdness happens in the string_field_build */ - ast_string_field_build(user,secret,"%s;%s",buf99,v->value); - /* 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); */ + char *old = ast_strdupa(user->secret); + + ast_string_field_build(user, secret, "%s;%s", old, v->value); } else ast_string_field_set(user, secret, v->value); } else if (!strcasecmp(v->name, "callerid")) { diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index ca37eee9d..e1eb21e5e 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -3642,7 +3642,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) } else if (!strcasecmp(v->name, "port")) { gw->addr.sin_port = htons(atoi(v->value)); } else if (!strcasecmp(v->name, "context")) { - strncpy(context, v->value, sizeof(context) - 1); + ast_copy_string(context, v->value, sizeof(context)); } else if (!strcasecmp(v->name, "dtmfmode")) { if (!strcasecmp(v->value, "inband")) dtmfmode = MGCP_DTMF_INBAND; @@ -3664,9 +3664,9 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) ast_callerid_split(v->value, cid_name, sizeof(cid_name), cid_num, sizeof(cid_num)); } } 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, "accountcode")) { - strncpy(accountcode, v->value, sizeof(accountcode)-1); + ast_copy_string(accountcode, v->value, sizeof(accountcode)); } else if (!strcasecmp(v->name, "amaflags")) { y = ast_cdr_amaflags2int(v->value); if (y < 0) { @@ -3675,7 +3675,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) amaflags = y; } } else if (!strcasecmp(v->name, "musiconhold")) { - strncpy(musicclass, v->value, sizeof(musicclass)-1); + ast_copy_string(musicclass, v->value, sizeof(musicclass)); } else if (!strcasecmp(v->name, "callgroup")) { cur_callergroup = ast_get_group(v->value); } else if (!strcasecmp(v->name, "pickupgroup")) { @@ -3689,7 +3689,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) } else if (!strcasecmp(v->name, "canreinvite")) { canreinvite = ast_true(v->value); } else if (!strcasecmp(v->name, "mailbox")) { - strncpy(mailbox, v->value, sizeof(mailbox) -1); + ast_copy_string(mailbox, v->value, sizeof(mailbox)); } else if (!strcasecmp(v->name, "adsi")) { adsi = ast_true(v->value); } else if (!strcasecmp(v->name, "callreturn")) { @@ -3727,19 +3727,18 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) ast_mutex_init(&e->lock); ast_mutex_init(&e->rqnt_queue_lock); ast_mutex_init(&e->cmd_queue_lock); - strncpy(e->name, v->value, sizeof(e->name) - 1); + ast_copy_string(e->name, v->value, sizeof(e->name)); e->needaudit = 1; } - strncpy(gw->wcardep, v->value, sizeof(gw->wcardep) - 1); - /*strncpy(e->name, "aaln/" "*", sizeof(e->name) - 1);*/ + ast_copy_string(gw->wcardep, v->value, sizeof(gw->wcardep)); /* XXX Should we really check for uniqueness?? XXX */ - strncpy(e->accountcode, accountcode, sizeof(e->accountcode) - 1); - strncpy(e->context, context, sizeof(e->context) - 1); - strncpy(e->cid_num, cid_num, sizeof(e->cid_num) - 1); - strncpy(e->cid_name, cid_name, sizeof(e->cid_name) - 1); - strncpy(e->language, language, sizeof(e->language) - 1); - strncpy(e->musicclass, musicclass, sizeof(e->musicclass) - 1); - strncpy(e->mailbox, mailbox, sizeof(e->mailbox) - 1); + ast_copy_string(e->accountcode, accountcode, sizeof(e->accountcode)); + ast_copy_string(e->context, context, sizeof(e->context)); + ast_copy_string(e->cid_num, cid_num, sizeof(e->cid_num)); + ast_copy_string(e->cid_name, cid_name, sizeof(e->cid_name)); + ast_copy_string(e->language, language, sizeof(e->language)); + ast_copy_string(e->musicclass, musicclass, sizeof(e->musicclass)); + ast_copy_string(e->mailbox, mailbox, sizeof(e->mailbox)); snprintf(e->rqnt_ident, sizeof(e->rqnt_ident), "%08lx", ast_random()); e->msgstate = -1; e->amaflags = amaflags; @@ -3827,17 +3826,17 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) ast_mutex_init(&e->lock); ast_mutex_init(&e->rqnt_queue_lock); ast_mutex_init(&e->cmd_queue_lock); - strncpy(e->name, v->value, sizeof(e->name) - 1); + ast_copy_string(e->name, v->value, sizeof(e->name)); e->needaudit = 1; } /* XXX Should we really check for uniqueness?? XXX */ - strncpy(e->accountcode, accountcode, sizeof(e->accountcode) - 1); - strncpy(e->context, context, sizeof(e->context) - 1); - strncpy(e->cid_num, cid_num, sizeof(e->cid_num) - 1); - strncpy(e->cid_name, cid_name, sizeof(e->cid_name) - 1); - strncpy(e->language, language, sizeof(e->language) - 1); - strncpy(e->musicclass, musicclass, sizeof(e->musicclass) - 1); - strncpy(e->mailbox, mailbox, sizeof(e->mailbox)-1); + ast_copy_string(e->accountcode, accountcode, sizeof(e->accountcode)); + ast_copy_string(e->context, context, sizeof(e->context)); + ast_copy_string(e->cid_num, cid_num, sizeof(e->cid_num)); + ast_copy_string(e->cid_name, cid_name, sizeof(e->cid_name)); + ast_copy_string(e->language, language, sizeof(e->language)); + ast_copy_string(e->musicclass, musicclass, sizeof(e->musicclass)); + ast_copy_string(e->mailbox, mailbox, sizeof(e->mailbox)); if (!ast_strlen_zero(mailbox)) { ast_verbose(VERBOSE_PREFIX_3 "Setting mailbox '%s' on %s@%s\n", mailbox, gw->name, e->name); } @@ -3890,7 +3889,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) memset(sub, 0, sizeof(struct mgcp_subchannel)); ast_mutex_init(&sub->lock); ast_mutex_init(&sub->cx_queue_lock); - strncpy(sub->magic, MGCP_SUBCHANNEL_MAGIC, sizeof(sub->magic) - 1); + ast_copy_string(sub->magic, MGCP_SUBCHANNEL_MAGIC, sizeof(sub->magic)); sub->parent = e; sub->id = i; snprintf(sub->txident, sizeof(sub->txident), "%08lx", ast_random()); diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c index 340ed2475..8cf72fb43 100644 --- a/channels/chan_nbs.c +++ b/channels/chan_nbs.c @@ -129,10 +129,10 @@ static struct nbs_pvt *nbs_alloc(void *data) { struct nbs_pvt *p; int flags = 0; - char stream[256] = ""; + char stream[256]; char *opts; - strncpy(stream, data, sizeof(stream) - 1); + ast_copy_string(stream, data, sizeof(stream)); if ((opts = strchr(stream, ':'))) { *opts = '\0'; opts++; @@ -153,7 +153,7 @@ static struct nbs_pvt *nbs_alloc(void *data) } else flags = NBS_FLAG_OVERSPEAK; - strncpy(p->stream, stream, sizeof(p->stream) - 1); + ast_copy_string(p->stream, stream, sizeof(p->stream)); p->nbs = nbs_newstream("asterisk", stream, flags); if (!p->nbs) { ast_log(LOG_WARNING, "Unable to allocate new NBS stream '%s' with flags %d\n", stream, flags); @@ -247,8 +247,8 @@ static struct ast_channel *nbs_new(struct nbs_pvt *i, int state) if (state == AST_STATE_RING) tmp->rings = 1; tmp->tech_pvt = i; - strncpy(tmp->context, context, sizeof(tmp->context)-1); - strncpy(tmp->exten, "s", sizeof(tmp->exten) - 1); + ast_copy_string(tmp->context, context, sizeof(tmp->context)); + ast_copy_string(tmp->exten, "s", sizeof(tmp->exten)); ast_string_field_set(tmp, language, ""); i->owner = tmp; i->u = ast_module_user_add(tmp); diff --git a/channels/chan_phone.c b/channels/chan_phone.c index dbf44f9fc..a165cf2c6 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -313,12 +313,12 @@ static int phone_call(struct ast_channel *ast, char *dest, int timeout) } /* the standard format of ast->callerid is: "name" , but not always complete */ if (ast_strlen_zero(ast->cid.cid_name)) - strncpy(cid.name, DEFAULT_CALLER_ID, sizeof(cid.name) - 1); + strcpy(cid.name, DEFAULT_CALLER_ID); else - strncpy(cid.name, ast->cid.cid_name, sizeof(cid.name) - 1); + ast_copy_string(cid.name, ast->cid.cid_name, sizeof(cid.name)); if (ast->cid.cid_num) - strncpy(cid.number, ast->cid.cid_num, sizeof(cid.number) - 1); + ast_copy_string(cid.number, ast->cid.cid_num, sizeof(cid.number)); p = ast->tech_pvt; @@ -873,11 +873,11 @@ static struct ast_channel *phone_new(struct phone_pvt *i, int state, char *conte if (state == AST_STATE_RING) tmp->rings = 1; tmp->tech_pvt = i; - strncpy(tmp->context, context, sizeof(tmp->context)-1); + ast_copy_string(tmp->context, context, sizeof(tmp->context)); if (!ast_strlen_zero(i->ext)) - strncpy(tmp->exten, i->ext, sizeof(tmp->exten)-1); + ast_copy_string(tmp->exten, i->ext, sizeof(tmp->exten)); else - strncpy(tmp->exten, "s", sizeof(tmp->exten) - 1); + strcpy(tmp->exten, "s"); if (!ast_strlen_zero(i->language)) ast_string_field_set(tmp, language, i->language); @@ -1213,15 +1213,15 @@ static struct phone_pvt *mkif(char *iface, int mode, int txgain, int rxgain) tmp->lastinput = -1; tmp->ministate = 0; memset(tmp->ext, 0, sizeof(tmp->ext)); - strncpy(tmp->language, language, sizeof(tmp->language)-1); - strncpy(tmp->dev, iface, sizeof(tmp->dev)-1); - strncpy(tmp->context, context, sizeof(tmp->context)-1); + ast_copy_string(tmp->language, language, sizeof(tmp->language)); + ast_copy_string(tmp->dev, iface, sizeof(tmp->dev)); + ast_copy_string(tmp->context, context, sizeof(tmp->context)); tmp->next = NULL; tmp->obuflen = 0; tmp->dialtone = 0; tmp->cpt = 0; - strncpy(tmp->cid_num, cid_num, sizeof(tmp->cid_num)-1); - strncpy(tmp->cid_name, cid_name, sizeof(tmp->cid_name)-1); + ast_copy_string(tmp->cid_num, cid_num, sizeof(tmp->cid_num)); + ast_copy_string(tmp->cid_name, cid_name, sizeof(tmp->cid_name)); tmp->txgain = txgain; ioctl(tmp->fd, PHONE_PLAY_VOLUME, tmp->txgain); tmp->rxgain = rxgain; @@ -1392,7 +1392,7 @@ static int load_module(void) } else if (!strcasecmp(v->name, "silencesupression")) { silencesupression = ast_true(v->value); } 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, "callerid")) { ast_callerid_split(v->value, cid_name, sizeof(cid_name), cid_num, sizeof(cid_num)); } else if (!strcasecmp(v->name, "mode")) { @@ -1411,7 +1411,7 @@ static int load_module(void) else ast_log(LOG_WARNING, "Unknown mode: %s\n", v->value); } else if (!strcasecmp(v->name, "context")) { - strncpy(context, v->value, sizeof(context)-1); + ast_copy_string(context, v->value, sizeof(context)); } else if (!strcasecmp(v->name, "format")) { if (!strcasecmp(v->value, "g723.1")) { prefformat = AST_FORMAT_G723_1; diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 6e990fc1a..051f0cf31 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -8630,7 +8630,7 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi /* This is an attended transfer */ referdata->attendedtransfer = 1; - strncpy(referdata->replaces_callid, ptr+9, sizeof(referdata->replaces_callid)); + ast_copy_string(referdata->replaces_callid, ptr+9, sizeof(referdata->replaces_callid)); ast_uri_decode(referdata->replaces_callid); if ((ptr = strchr(referdata->replaces_callid, ';'))) /* Find options */ { *ptr++ = '\0'; @@ -8677,9 +8677,9 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi if ((urioption = strchr(ptr, ';'))) *urioption++ = '\0'; /* Save the domain for the dial plan */ - strncpy(referdata->refer_to_domain, ptr, sizeof(referdata->refer_to_domain)); + ast_copy_string(referdata->refer_to_domain, ptr, sizeof(referdata->refer_to_domain)); if (urioption) - strncpy(referdata->refer_to_urioption, urioption, sizeof(referdata->refer_to_urioption)); + ast_copy_string(referdata->refer_to_urioption, urioption, sizeof(referdata->refer_to_urioption)); } if ((ptr = strchr(refer_to, ';'))) /* Remove options */ @@ -8704,7 +8704,7 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi S_OR(transferer->context, default_context)); } - strncpy(referdata->refer_to_context, transfer_context, sizeof(referdata->refer_to_context)); + ast_copy_string(referdata->refer_to_context, transfer_context, sizeof(referdata->refer_to_context)); /* Either an existing extension or the parking extension */ if (ast_exists_extension(NULL, transfer_context, refer_to, 1, NULL) ) { -- cgit v1.2.3