]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: Escape comma in section name.
authorSergey Kitov <sergey.kitov@open-xchange.com>
Thu, 24 Aug 2017 07:01:02 +0000 (10:01 +0300)
committerSergey Kitov <sergey.kitov@open-xchange.com>
Fri, 25 Aug 2017 07:06:51 +0000 (10:06 +0300)
Comma is valid symbol in encoded non-ascii section names, so it
shouldn't be used as splitting symbol in section name.

src/lib-settings/settings-parser.c

index 101e7dc9014670cb9b962475bb016abc56089a46..462c1a150b1f09827946ef875d6448f52e8cedc2 100644 (file)
@@ -2166,7 +2166,7 @@ int settings_parser_apply_changes(struct setting_parser_context *dest,
 const char *settings_section_escape(const char *name)
 {
 #define CHAR_NEED_ESCAPE(c) \
-       ((c) == '=' || (c) == SETTINGS_SEPARATOR || (c) == '\\' || (c) == ' ')
+       ((c) == '=' || (c) == SETTINGS_SEPARATOR || (c) == '\\' || (c) == ' ' || (c) == ',')
        string_t *str;
        unsigned int i;
 
@@ -2193,6 +2193,9 @@ const char *settings_section_escape(const char *name)
                case ' ':
                        str_append(str, "\\_");
                        break;
+               case ',':
+                       str_append(str, "\\+");
+                       break;
                default:
                        str_append_c(str, name[i]);
                        break;