From: Kinsey Moore Date: Thu, 9 Feb 2012 19:52:25 +0000 (+0000) Subject: Make the config parser remove escaping backslashes X-Git-Tag: 1.8.11.0-rc1~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae3a465d8f79c39a85260beeb092449822a8f7b7;p=thirdparty%2Fasterisk.git Make the config parser remove escaping backslashes The config parser in Asterisk does not currently remove a backslash that is used to escape a semicolon which would otherwise be interpreted as the start of a comment. The change here causes that backslash to be removed, but does not create a real escape system in the config parser. The biggest complication with a real escape system would be breaking existing configs everywhere (parsing \\ as \ and breaking on escaped non-semicolon characters) even though it would be the "right" way to do things. (closes issue ASTERISK-17121) Review: https://reviewboard.asterisk.org/r/1724/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354655 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/config.c b/main/config.c index 680aba269e..1608e31f1b 100644 --- a/main/config.c +++ b/main/config.c @@ -1534,7 +1534,9 @@ static struct ast_config *config_text_file_load(const char *database, const char while ((comment_p = strchr(new_buf, COMMENT_META))) { if ((comment_p > new_buf) && (*(comment_p - 1) == '\\')) { /* Escaped semicolons aren't comments. */ - new_buf = comment_p + 1; + new_buf = comment_p; + /* write over the \ and bring the null terminator with us */ + memmove(comment_p - 1, comment_p, strlen(comment_p) + 1); } else if (comment_p[1] == COMMENT_TAG && comment_p[2] == COMMENT_TAG && (comment_p[3] != '-')) { /* Meta-Comment start detected ";--" */ if (comment < MAX_NESTED_COMMENTS) {