diff options
author | Waqas Hussain <waqas20@gmail.com> | 2014-10-08 18:42:33 -0400 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2014-10-08 18:42:33 -0400 |
commit | e8dcccf0b5e0837c906e28fcc6a43a88586d9a29 (patch) | |
tree | 868af36e940cd3b9d895fa74b3b9c0ab671f166f /util | |
parent | 3ae8a2ed6ef23c1e7cea54a93b05c624a321cf08 (diff) | |
parent | 997400f63d7ee6f1137abc75424ec752c7563ca9 (diff) | |
download | prosody-e8dcccf0b5e0837c906e28fcc6a43a88586d9a29.tar.gz prosody-e8dcccf0b5e0837c906e28fcc6a43a88586d9a29.zip |
Merge 0.9->0.10
Diffstat (limited to 'util')
-rw-r--r-- | util/dataforms.lua | 2 | ||||
-rw-r--r-- | util/stanza.lua | 15 |
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 = { ["'"] = "'", ["\""] = """, ["<"] = "<", [">"] = ">", ["&"] = "&" }; - function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end + local escape_table = { + ["'"] = "'"; + ['"'] = """; + ["<"] = "<"; + [">"] = ">"; + ["&"] = "&"; + -- 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"] = "	"; + ["\n"] = "
"; + ["\r"] = "
"; + }; + function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end _M.xml_escape = xml_escape; end |