Author: anthm Date: Tue May 26 13:04:22 2009 New Revision: 13438 Log: properly detect unterminated Modified: freeswitch/trunk/src/switch_utils.c freeswitch/trunk/src/switch_xml.c Modified: freeswitch/trunk/src/switch_utils.c ============================================================================== --- freeswitch/trunk/src/switch_utils.c (original) +++ freeswitch/trunk/src/switch_utils.c Tue May 26 13:04:22 2009 @@ -261,7 +261,7 @@ } } - return (char *) e; + return (e && *e == close) ? (char *) e : NULL; } SWITCH_DECLARE(switch_size_t) switch_fd_read_line(int fd, char *buf, switch_size_t len) Modified: freeswitch/trunk/src/switch_xml.c ============================================================================== --- freeswitch/trunk/src/switch_xml.c (original) +++ freeswitch/trunk/src/switch_xml.c Tue May 26 13:04:22 2009 @@ -1132,7 +1132,7 @@ return &root->xml; } -static char *expand_vars(char *buf, char *ebuf, switch_size_t elen, switch_size_t *newlen) +static char *expand_vars(char *buf, char *ebuf, switch_size_t elen, switch_size_t *newlen, const char **err) { char *var, *val; char *rp = buf; @@ -1161,6 +1161,8 @@ } } continue; + } else if (err) { + *err = "unterminated ${var}"; } } @@ -1267,7 +1269,8 @@ switch_size_t cur = 0, ml = 0; char *q, *cmd, buf[2048], ebuf[8192]; char *tcmd, *targ; - + int line = 0; + if ((read_fd = open(file, O_RDONLY, 0)) < 0) { const char *reason = strerror(errno); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldnt open %s (%s)\n", file, reason); @@ -1280,7 +1283,13 @@ while ((cur = switch_fd_read_line(read_fd, buf, sizeof(buf))) > 0) { char *arg, *e; - char *bp = expand_vars(buf, ebuf, sizeof(ebuf), &cur); + const char *err = NULL; + char *bp = expand_vars(buf, ebuf, sizeof(ebuf), &cur, &err); + line++; + + if (err && stderr) { + fprintf(stderr, "Error [%s] in line %s line %d\n", err, file, line); + } /* we ignore <include> or </include> for the sake of validators as well as <?xml version="1.0"?> type stuff */ if (strstr(buf, "<include>") || strstr(buf, "</include>") || strstr(buf, "<?")) {
participants (1)
-
FreeSWITCH SVN