]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Escape double quote when printing quoted string.
authorMark Andrews <marka@isc.org>
Sun, 22 Mar 2020 23:28:33 +0000 (10:28 +1100)
committerMark Andrews <marka@isc.org>
Thu, 30 Apr 2020 20:51:05 +0000 (06:51 +1000)
When we were printing quoted string, the double quotes where unescaped
leading to prematurely ending the quoted string.

lib/isccfg/parser.c

index 4cef5bc83f941d4df170440dd8feb1baca1c5f42..154311ace43c27eb83c2fcfe885e189e56b11217 100644 (file)
@@ -1671,7 +1671,12 @@ cfg_print_ustring(cfg_printer_t *pctx, const cfg_obj_t *obj) {
 static void
 print_qstring(cfg_printer_t *pctx, const cfg_obj_t *obj) {
        cfg_print_cstr(pctx, "\"");
-       cfg_print_ustring(pctx, obj);
+       for (size_t i = 0; i < obj->value.string.length; i++) {
+               if (obj->value.string.base[i] == '"') {
+                       cfg_print_cstr(pctx, "\\");
+               }
+               cfg_print_chars(pctx, &obj->value.string.base[i], 1);
+       }
        cfg_print_cstr(pctx, "\"");
 }