common : improve yaml log escaping (#4080)

* logging: improve escaping in yaml output

* logging: include review feedback
This commit is contained in:
Jannis Schönleber 2023-11-17 16:24:07 +01:00 committed by GitHub
parent c7cce1246e
commit 9e87ef60e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1194,6 +1194,7 @@ void dump_string_yaml_multiline(FILE * stream, const char * prop_name, const cha
if (!data_str.empty() && (std::isspace(data_str[0]) || std::isspace(data_str.back()))) { if (!data_str.empty() && (std::isspace(data_str[0]) || std::isspace(data_str.back()))) {
data_str = std::regex_replace(data_str, std::regex("\n"), "\\n"); data_str = std::regex_replace(data_str, std::regex("\n"), "\\n");
data_str = std::regex_replace(data_str, std::regex("\""), "\\\""); data_str = std::regex_replace(data_str, std::regex("\""), "\\\"");
data_str = std::regex_replace(data_str, std::regex(R"(\\[^n"])"), R"(\$&)");
data_str = "\"" + data_str + "\""; data_str = "\"" + data_str + "\"";
fprintf(stream, "%s: %s\n", prop_name, data_str.c_str()); fprintf(stream, "%s: %s\n", prop_name, data_str.c_str());
return; return;