[asterisk-commits] tilghman: trunk r68596 - in /trunk: ./ pbx/pbx_config.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sun Jun 10 21:28:09 MST 2007


Author: tilghman
Date: Sun Jun 10 23:28:08 2007
New Revision: 68596

URL: http://svn.digium.com/view/asterisk?view=rev&rev=68596
Log:
Merged revisions 68595 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r68595 | tilghman | 2007-06-10 23:21:30 -0500 (Sun, 10 Jun 2007) | 2 lines

"dialplan save" produced garbage in the config file

........

Modified:
    trunk/   (props changed)
    trunk/pbx/pbx_config.c

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

Modified: trunk/pbx/pbx_config.c
URL: http://svn.digium.com/view/asterisk/trunk/pbx/pbx_config.c?view=diff&rev=68596&r1=68595&r2=68596
==============================================================================
--- trunk/pbx/pbx_config.c (original)
+++ trunk/pbx/pbx_config.c Sun Jun 10 23:28:08 2007
@@ -851,16 +851,27 @@
 						    ast_get_extension_app(p));
 				} else { /* copy and replace '|' with ',' */
 					const char *sep, *cid;
-					char *tempdata;
+					char *tempdata = "";
 					char *s;
 					const char *el = ast_get_extension_label(p);
-					char label[128];
+					char label[128] = "";
  
- 					tempdata = ast_strdupa(ast_get_extension_app_data(p));
-
-					for (s = tempdata; *s; s++) {
-						if (*s == '|')
-							*s = ',';
+ 					s = ast_get_extension_app_data(p);
+					if (s) {
+						char *t;
+						tempdata = alloca(strlen(tempdata) * 2 + 1);
+
+						for (t = tempdata; *s; s++, t++) {
+							if (*s == '|')
+								*t = ',';
+							else {
+								if (*s == ',')
+									*t++ = '\\';
+								*t = *s;
+							}
+						}
+						/* Terminating NULL */
+						*t = *s;
 					}
 
 					if (ast_get_extension_matchcid(p)) {
@@ -869,7 +880,7 @@
 					} else
 						sep = cid = "";
 				
-					if (el && (snprintf(label, 127, "(%s)", el) != (strlen(el) + 2)))
+					if (el && (snprintf(label, sizeof(label), "(%s)", el) != (strlen(el) + 2)))
 						incomplete = 1;	/* error encountered or label > 125 chars */
 					
 					fprintf(output, "exten => %s%s%s,%d%s,%s(%s)\n",



More information about the asterisk-commits mailing list