about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libutil/xml-writer.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libutil/xml-writer.cc b/src/libutil/xml-writer.cc
index cd37dff5608f..27235933e7fb 100644
--- a/src/libutil/xml-writer.cc
+++ b/src/libutil/xml-writer.cc
@@ -89,6 +89,9 @@ void XMLWriter::writeAttrs(const XMLAttrs & attrs)
             if (c == '"') output << "&quot;";
             else if (c == '<') output << "&lt;";
             else if (c == '&') output << "&amp;";
+            /* Escape newlines to prevent attribute normalisation (see
+               XML spec, section 3.3.3. */
+            else if (c == '\n') output << "&#xA;";
             else output << c;
         }
         output << "\"";