aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2014-10-08 18:42:33 -0400
committerWaqas Hussain <waqas20@gmail.com>2014-10-08 18:42:33 -0400
commite8dcccf0b5e0837c906e28fcc6a43a88586d9a29 (patch)
tree868af36e940cd3b9d895fa74b3b9c0ab671f166f
parent3ae8a2ed6ef23c1e7cea54a93b05c624a321cf08 (diff)
parent997400f63d7ee6f1137abc75424ec752c7563ca9 (diff)
downloadprosody-e8dcccf0b5e0837c906e28fcc6a43a88586d9a29.tar.gz
prosody-e8dcccf0b5e0837c906e28fcc6a43a88586d9a29.zip
Merge 0.9->0.10
-rw-r--r--util/dataforms.lua2
-rw-r--r--util/stanza.lua15
2 files changed, 14 insertions, 3 deletions
diff --git a/util/dataforms.lua b/util/dataforms.lua
index c352858c..b2988ae7 100644
--- a/util/dataforms.lua
+++ b/util/dataforms.lua
@@ -121,7 +121,7 @@ function form_t.data(layout, stanza)
for _, field in ipairs(layout) do
local tag;
- for field_tag in stanza:childtags() do
+ for field_tag in stanza:childtags("field") do
if field.name == field_tag.attr.var then
tag = field_tag;
break;
diff --git a/util/stanza.lua b/util/stanza.lua
index 82601e63..3d7caf8c 100644
--- a/util/stanza.lua
+++ b/util/stanza.lua
@@ -202,8 +202,19 @@ end
local xml_escape
do
- local escape_table = { ["'"] = "&apos;", ["\""] = "&quot;", ["<"] = "&lt;", [">"] = "&gt;", ["&"] = "&amp;" };
- function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end
+ local escape_table = {
+ ["'"] = "&apos;";
+ ['"'] = "&quot;";
+ ["<"] = "&lt;";
+ [">"] = "&gt;";
+ ["&"] = "&amp;";
+ -- escape this whitespace because [\r\n\t] change into spaces in attributes
+ -- and \r\n changes into \n in text, and we want to preserve original bytes
+ ["\t"] = "&#x9;";
+ ["\n"] = "&#xA;";
+ ["\r"] = "&#xD;";
+ };
+ function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end
_M.xml_escape = xml_escape;
end