summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/xplist.c7
-rw-r--r--test/data/1.plist2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/xplist.c b/src/xplist.c
index 15c9497..ce8dec1 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -196,7 +196,12 @@ static void node_to_xml(GNode * node, gpointer xml_struct)
{
xmlNodeAddContent(xstruct->xml, BAD_CAST("\t"));
}
- child_node = xmlNewChild(xstruct->xml, NULL, tag, BAD_CAST(val));
+ if (node_data->type == PLIST_STRING) {
+ /* make sure we convert the following predefined xml entities */
+ /* < = &lt; > = &gt; ' = &apos; " = &quot; & = &amp; */
+ child_node = xmlNewTextChild(xstruct->xml, NULL, tag, BAD_CAST(val));
+ } else
+ child_node = xmlNewChild(xstruct->xml, NULL, tag, BAD_CAST(val));
xmlNodeAddContent(xstruct->xml, BAD_CAST("\n"));
g_free(val);
diff --git a/test/data/1.plist b/test/data/1.plist
index dfa27b0..c7135e9 100644
--- a/test/data/1.plist
+++ b/test/data/1.plist
@@ -29,5 +29,7 @@
<key>Some Data</key>
<data>
</data>
+ <key>Some Entities</key>
+ <string>hellow world &amp; others &lt;nodes&gt; are &quot;fun!?&apos;</string>
</dict>
</plist>