[asterisk-commits] kpfleming: trunk r46201 - in /trunk: ./ apps/ cdr/ channels/ main/ pbx/ res/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Oct 25 07:44:51 MST 2006


Author: kpfleming
Date: Wed Oct 25 09:44:50 2006
New Revision: 46201

URL: http://svn.digium.com/view/asterisk?rev=46201&view=rev
Log:
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

........

Modified:
    trunk/   (props changed)
    trunk/apps/app_getcpeid.c
    trunk/apps/app_ices.c
    trunk/apps/app_parkandannounce.c
    trunk/apps/app_queue.c
    trunk/apps/app_record.c
    trunk/apps/app_sms.c
    trunk/apps/app_softhangup.c
    trunk/apps/app_voicemail.c
    trunk/cdr/cdr_custom.c
    trunk/channels/chan_alsa.c
    trunk/channels/chan_features.c
    trunk/channels/chan_h323.c
    trunk/channels/chan_iax2.c
    trunk/channels/chan_mgcp.c
    trunk/channels/chan_nbs.c
    trunk/channels/chan_phone.c
    trunk/channels/chan_sip.c
    trunk/main/cdr.c
    trunk/main/cli.c
    trunk/main/db.c
    trunk/main/image.c
    trunk/main/utils.c
    trunk/pbx/dundi-parser.c
    trunk/pbx/pbx_ael.c
    trunk/pbx/pbx_realtime.c
    trunk/pbx/pbx_spool.c
    trunk/res/res_adsi.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/apps/app_getcpeid.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_getcpeid.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_getcpeid.c (original)
+++ trunk/apps/app_getcpeid.c Wed Oct 25 09:44:50 2006
@@ -71,21 +71,20 @@
 	int gotgeometry = 0;
 	int gotcpeid = 0;
 	int width, height, buttons;
-	char data[4][80];
-	char *stuff[4];
+	char *data[4];
+	unsigned int x;
 
 	u = ast_module_user_add(chan);
-	stuff[0] = data[0];
-	stuff[1] = data[1];
-	stuff[2] = data[2];
-	stuff[3] = data[3];
-	memset(data, 0, sizeof(data));
-	strncpy(stuff[0], "** CPE Info **", sizeof(data[0]) - 1);
-	strncpy(stuff[1], "Identifying CPE...", sizeof(data[1]) - 1);
-	strncpy(stuff[2], "Please wait...", sizeof(data[2]) - 1);
+
+	for (x = 0; x < 4; x++)
+		data[x] = alloca(80);
+
+	strcpy(data[0], "** CPE Info **");
+	strcpy(data[1], "Identifying CPE...");
+	strcpy(data[2], "Please wait...");
 	res = ast_adsi_load_session(chan, NULL, 0, 1);
 	if (res > 0) {
-		cpeid_setstatus(chan, stuff, 0);
+		cpeid_setstatus(chan, data, 0);
 		res = ast_adsi_get_cpeid(chan, cpeid, 0);
 		if (res > 0) {
 			gotcpeid = 1;
@@ -93,9 +92,9 @@
 				ast_verbose(VERBOSE_PREFIX_3 "Got CPEID of '%02x:%02x:%02x:%02x' on '%s'\n", cpeid[0], cpeid[1], cpeid[2], cpeid[3], chan->name);
 		}
 		if (res > -1) {
-			strncpy(stuff[1], "Measuring CPE...", sizeof(data[1]) - 1);
-			strncpy(stuff[2], "Please wait...", sizeof(data[2]) - 1);
-			cpeid_setstatus(chan, stuff, 0);
+			strcpy(data[1], "Measuring CPE...");
+			strcpy(data[2], "Please wait...");
+			cpeid_setstatus(chan, data, 0);
 			res = ast_adsi_get_cpeinfo(chan, &width, &height, &buttons, 0);
 			if (res > -1) {
 				if (option_verbose > 2)
@@ -105,15 +104,15 @@
 		}
 		if (res > -1) {
 			if (gotcpeid)
-				snprintf(stuff[1], sizeof(data[1]), "CPEID: %02x:%02x:%02x:%02x", cpeid[0], cpeid[1], cpeid[2], cpeid[3]);
+				snprintf(data[1], 80, "CPEID: %02x:%02x:%02x:%02x", cpeid[0], cpeid[1], cpeid[2], cpeid[3]);
 			else
-				strncpy(stuff[1], "CPEID Unknown", sizeof(data[1]) - 1);
+				strcpy(data[1], "CPEID Unknown");
 			if (gotgeometry) 
-				snprintf(stuff[2], sizeof(data[2]), "Geom: %dx%d, %d buttons", width, height, buttons);
+				snprintf(data[2], 80, "Geom: %dx%d, %d buttons", width, height, buttons);
 			else
-				strncpy(stuff[2], "Geometry unknown", sizeof(data[2]) - 1);
-			strncpy(stuff[3], "Press # to exit", sizeof(data[3]) - 1);
-			cpeid_setstatus(chan, stuff, 1);
+				strcpy(data[2], "Geometry unknown");
+			strcpy(data[3], "Press # to exit");
+			cpeid_setstatus(chan, data, 1);
 			for(;;) {
 				res = ast_waitfordigit(chan, 1000);
 				if (res < 0)

Modified: trunk/apps/app_ices.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_ices.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_ices.c (original)
+++ trunk/apps/app_ices.c Wed Oct 25 09:44:50 2006
@@ -141,7 +141,7 @@
 		return -1;
 	}
 	if (((char *)data)[0] == '/')
-		strncpy(filename, (char *)data, sizeof(filename) - 1);
+		ast_copy_string(filename, (char *) data, sizeof(filename));
 	else
 		snprintf(filename, sizeof(filename), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, (char *)data);
 	/* Placeholder for options */		

Modified: trunk/apps/app_parkandannounce.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_parkandannounce.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_parkandannounce.c (original)
+++ trunk/apps/app_parkandannounce.c Wed Oct 25 09:44:50 2006
@@ -78,13 +78,13 @@
 {
 	int res=0;
 	char *return_context;
-	int l, lot, timeout = 0, dres;
+	int lot, timeout = 0, dres;
 	char *working, *context, *exten, *priority, *dial, *dialtech, *dialstr;
 	char *template, *tpl_working, *tpl_current;
 	char *tmp[100];
 	char buf[13];
 	int looptemp=0,i=0;
-	char *s,*orig_s;
+	char *s;
 
 	struct ast_channel *dchan;
 	struct outgoing_helper oh;
@@ -99,18 +99,11 @@
   
 	u = ast_module_user_add(chan);
 
-	l=strlen(data)+2;	
-	if (!(orig_s = ast_malloc(l))) {
-		ast_module_user_remove(u);
-		return -1;
-	}
-	s=orig_s;
-	strncpy(s,data,l);
+	s = ast_strdupa(data);
 
 	template=strsep(&s,"|");
 	if(! template) {
 		ast_log(LOG_WARNING, "PARK: An announce template must be defined\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	}
@@ -122,7 +115,6 @@
 	dial=strsep(&s, "|");
 	if(!dial) {
 		ast_log(LOG_WARNING, "PARK: A dial resource must be specified i.e: Console/dsp or Zap/g1/5551212\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	} else {
@@ -155,16 +147,15 @@
 	}
 	if(atoi(priority) < 0) {
 		ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority);
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	}
 	/* At this point we have a priority and maybe an extension and a context */
 	chan->priority = atoi(priority);
 	if (exten)
-		strncpy(chan->exten, exten, sizeof(chan->exten)-1);
+		ast_copy_string(chan->exten, exten, sizeof(chan->exten));
 	if (context)
-		strncpy(chan->context, context, sizeof(chan->context)-1);
+		ast_copy_string(chan->context, context, sizeof(chan->context));
 	} else {  /* increment the priority by default*/
 		chan->priority++;
 	}
@@ -202,13 +193,11 @@
 				ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", dchan->name);
         			ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name);
 			ast_hangup(dchan);
-			free(orig_s);
 			ast_module_user_remove(u);
 			return -1;
 		}
 	} else {
 		ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1; 
 	}
@@ -245,7 +234,6 @@
 
 	ast_stopstream(dchan);  
 	ast_hangup(dchan);
-	free(orig_s);
 	
 	ast_module_user_remove(u);
 	

Modified: trunk/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_queue.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_queue.c (original)
+++ trunk/apps/app_queue.c Wed Oct 25 09:44:50 2006
@@ -767,10 +767,6 @@
    extra fields in the tables. */
 static void queue_set_param(struct call_queue *q, const char *param, const char *val, int linenum, int failunknown)
 {
-	int i = 0;
-	char *c, *lastc;
-	char buff[80];
-
 	if (!strcasecmp(param, "musicclass") || 
 		!strcasecmp(param, "music") || !strcasecmp(param, "musiconhold")) {
 		ast_copy_string(q->moh, val, sizeof(q->moh));
@@ -831,22 +827,18 @@
 		else
 			q->announceholdtime = 0;
 	} else if (!strcasecmp(param, "periodic-announce")) {
-		if (strchr(val,'|')) {
-			lastc = (char *)val;
-			while ((c = strchr(lastc,'|'))) {
-				if (i > MAX_PERIODIC_ANNOUNCEMENTS)
+		if (strchr(val, '|')) {
+			char *s, *buf = ast_strdupa(val);
+			unsigned int i = 0;
+
+			while ((s = strsep(&buf, "|"))) {
+				ast_copy_string(q->sound_periodicannounce[i], s, sizeof(q->sound_periodicannounce[i]));
+				i++;
+				if (i == MAX_PERIODIC_ANNOUNCEMENTS)
 					break;
-				strncpy(buff, lastc, abs(lastc - c));
-				buff[abs(lastc - c)] = '\0';
-				ast_copy_string(q->sound_periodicannounce[i], buff, sizeof(q->sound_periodicannounce[i]));
-				lastc = (c + 1);
-				i++;
-			}
-			if (strlen(lastc)) {
-				ast_copy_string(q->sound_periodicannounce[i], lastc, sizeof(q->sound_periodicannounce[i]));
 			}
 		} else {
-			ast_copy_string(q->sound_periodicannounce[i], val, sizeof(q->sound_periodicannounce[i]));
+			ast_copy_string(q->sound_periodicannounce[0], val, sizeof(q->sound_periodicannounce[0]));
 		}
 	} else if (!strcasecmp(param, "periodic-announce-frequency")) {
 		q->periodicannouncefrequency = atoi(val);

Modified: trunk/apps/app_record.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_record.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_record.c (original)
+++ trunk/apps/app_record.c Wed Oct 25 09:44:50 2006
@@ -212,7 +212,7 @@
 		} while (ast_fileexists(tmp, ext, chan->language) > 0);
 		pbx_builtin_setvar_helper(chan, "RECORDED_FILE", tmp);
 	} else
-		strncpy(tmp, filename, sizeof(tmp)-1);
+		ast_copy_string(tmp, filename, sizeof(tmp));
 	/* end of routine mentioned */
 	
 	

Modified: trunk/apps/app_sms.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_sms.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_sms.c (original)
+++ trunk/apps/app_sms.c Wed Oct 25 09:44:50 2006
@@ -1389,7 +1389,7 @@
 			ast_module_user_remove(u);
 			return -1;
 		}
-		strncpy (h.queue, (char *)d, p - d);
+		strncpy(h.queue, (char *)d, p - d);
 		if (*p == '|')
 			p++;
 		d = p;

Modified: trunk/apps/app_softhangup.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_softhangup.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_softhangup.c (original)
+++ trunk/apps/app_softhangup.c Wed Oct 25 09:44:50 2006
@@ -74,7 +74,7 @@
 	all = options && strchr(options,'a');
 	c = ast_channel_walk_locked(NULL);
 	while (c) {
-		strncpy(name, c->name, sizeof(name)-1);
+		ast_copy_string(name, c->name, sizeof(name));
 		ast_mutex_unlock(&c->lock);
 		/* XXX watch out, i think it is wrong to access c-> after unlocking! */
 		if (all) {

Modified: trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_voicemail.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Wed Oct 25 09:44:50 2006
@@ -7278,23 +7278,22 @@
 			char *tmpread, *tmpwrite;
 			emailbody = ast_strdup(s);
 
-			/* substitute strings \t and \n into the apropriate characters */
+			/* substitute strings \t and \n into the appropriate characters */
 			tmpread = tmpwrite = emailbody;
 			while ((tmpwrite = strchr(tmpread,'\\'))) {
-				int len = strlen("\n");
 				switch (tmpwrite[1]) {
 				case 'n':
-					strncpy(tmpwrite + len, tmpwrite + 2, strlen(tmpwrite + 2) + 1);
-					strncpy(tmpwrite, "\n", len);
+					*tmpwrite++ = '\n';
+					memmove(tmpwrite, tmpwrite + 1, strlen(tmpwrite + 1) + 1);
 					break;
 				case 't':
-					strncpy(tmpwrite + len, tmpwrite + 2, strlen(tmpwrite + 2) + 1);
-					strncpy(tmpwrite, "\t", len);
+					*tmpwrite++ = '\t';
+					memmove(tmpwrite, tmpwrite + 1, strlen(tmpwrite + 1) + 1);
 					break;
 				default:
 					ast_log(LOG_NOTICE, "Substitution routine does not support this character: %c\n", tmpwrite[1]);
 				}
-				tmpread = tmpwrite + len;
+				tmpread = tmpwrite + 1;
 			}
 		}
 		if ((s = ast_variable_retrieve(cfg, "general", "pagersubject")))
@@ -7303,23 +7302,22 @@
 			char *tmpread, *tmpwrite;
 			pagerbody = ast_strdup(s);
 
-			/* substitute strings \t and \n into the apropriate characters */
+			/* substitute strings \t and \n into the appropriate characters */
 			tmpread = tmpwrite = pagerbody;
 			while ((tmpwrite = strchr(tmpread, '\\'))) {
-				int len = strlen("\n");
 				switch (tmpwrite[1]) {
-					case 'n':
-						strncpy(tmpwrite + len, tmpwrite + 2, strlen(tmpwrite + 2) + 1);
-						strncpy(tmpwrite, "\n", len);
-						break;
-					case 't':
-						strncpy(tmpwrite + len, tmpwrite + 2, strlen(tmpwrite + 2) + 1);
-						strncpy(tmpwrite, "\t", len);
-						break;
-					default:
-						ast_log(LOG_NOTICE, "Substitution routine does not support this character: %c\n", tmpwrite[1]);
+				case 'n':
+					*tmpwrite++ = '\n';
+					memmove(tmpwrite, tmpwrite + 1, strlen(tmpwrite + 1) + 1);
+					break;
+				case 't':
+					*tmpwrite++ = '\t';
+					memmove(tmpwrite, tmpwrite + 1, strlen(tmpwrite + 1) + 1);
+					break;
+				default:
+					ast_log(LOG_NOTICE, "Substitution routine does not support this character: %c\n", tmpwrite[1]);
 				}
-				tmpread = tmpwrite + len;
+				tmpread = tmpwrite + 1;
 			}
 		}
 		AST_LIST_UNLOCK(&users);

Modified: trunk/cdr/cdr_custom.c
URL: http://svn.digium.com/view/asterisk/trunk/cdr/cdr_custom.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/cdr/cdr_custom.c (original)
+++ trunk/cdr/cdr_custom.c Wed Oct 25 09:44:50 2006
@@ -77,9 +77,9 @@
 		while(var) {
 			ast_mutex_lock(&lock);
 			if (!ast_strlen_zero(var->name) && !ast_strlen_zero(var->value)) {
-				if (strlen(var->value) > (sizeof(format) - 2))
+				if (strlen(var->value) > (sizeof(format) - 1))
 					ast_log(LOG_WARNING, "Format string too long, will be truncated, at line %d\n", var->lineno);
-				strncpy(format, var->value, sizeof(format) - 2);
+				ast_copy_string(format, var->value, sizeof(format) - 1);
 				strcat(format,"\n");
 				snprintf(master, sizeof(master),"%s/%s/%s", ast_config_AST_LOG_DIR, name, var->name);
 				ast_mutex_unlock(&lock);

Modified: trunk/channels/chan_alsa.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_alsa.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_alsa.c (original)
+++ trunk/channels/chan_alsa.c Wed Oct 25 09:44:50 2006
@@ -1042,7 +1042,7 @@
 		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 @@
 				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

Modified: trunk/channels/chan_features.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_features.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_features.c (original)
+++ trunk/channels/chan_features.c Wed Oct 25 09:44:50 2006
@@ -437,8 +437,8 @@
 			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);

Modified: trunk/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_h323.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_h323.c (original)
+++ trunk/channels/chan_h323.c Wed Oct 25 09:44:50 2006
@@ -604,7 +604,7 @@
 	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 @@
 	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 @@
 		/* 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 @@
 	} 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 @@
 		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 @@
 	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 @@
 		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 @@
 	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 @@
 	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 @@
 			*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 @@
 		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 @@
 	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 @@
 	/* 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 @@
 				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 @@
 				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 @@
 							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 @@
 					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 @@
 		return 0;
 	}
 	/* Check if requested extension at 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 @@
 	} 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 @@
 	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 @@
 	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 @@
 				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);

Modified: trunk/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_iax2.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_iax2.c (original)
+++ trunk/channels/chan_iax2.c Wed Oct 25 09:44:50 2006
@@ -8594,11 +8594,9 @@
 				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")) {

Modified: trunk/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_mgcp.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_mgcp.c (original)
+++ trunk/channels/chan_mgcp.c Wed Oct 25 09:44:50 2006
@@ -3642,7 +3642,7 @@
 			} 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 @@
 					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 @@
 					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 @@
 			} 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 @@
 						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 @@
 						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 @@
 								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());

Modified: trunk/channels/chan_nbs.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_nbs.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_nbs.c (original)
+++ trunk/channels/chan_nbs.c Wed Oct 25 09:44:50 2006
@@ -129,10 +129,10 @@
 {
 	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 @@
 		} 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 @@
 		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);

Modified: trunk/channels/chan_phone.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_phone.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_phone.c (original)
+++ trunk/channels/chan_phone.c Wed Oct 25 09:44:50 2006
@@ -313,12 +313,12 @@
 	}
 	/* the standard format of ast->callerid is:  "name" <number>, 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 @@
 		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 @@
 		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 @@
 		} 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 @@
 			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;

Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=46201&r1=46200&r2=46201&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Wed Oct 25 09:44:50 2006
@@ -8630,7 +8630,7 @@
 
 			/* 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 @@
 		if ((urioption = strchr(ptr, ';')))
 			*urioption++ = '\0';

[... 332 lines stripped ...]


More information about the asterisk-commits mailing list