aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-11 04:28:08 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-11 04:28:08 +0000
commit1c3d96abeccab17bf1354118041275035e2c35d1 (patch)
tree34f4f66101c4e855f512c3dd66db42f7eb823f6e
parent9d87273d60b56de573845dc9714769ac9f7a9d15 (diff)
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 ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@68596 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--pbx/pbx_config.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 79a18da0b..e2102ee04 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -851,16 +851,27 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
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 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
} 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",