Commit 7d8ce3b5 authored by louiz’'s avatar louiz’

Use XML-sanitized strings when serializing stanzas for the XMPP server

parent 3960e4d5
......@@ -97,6 +97,14 @@ int main()
});
xml.feed(doc.data(), doc.size(), true);
const std::string doc2 = "<stream xmlns='s'><stanza>coucou\r\n\a</stanza></stream>";
xml.add_stanza_callback([](const Stanza& stanza)
{
std::cout << stanza.to_string() << std::endl;
assert(stanza.get_inner() == "coucou\r\n");
});
xml.feed(doc2.data(), doc.size(), true);
/**
* XML escape/escape
*/
......
......@@ -192,12 +192,13 @@ std::string XmlNode::to_string() const
std::string res("<");
res += this->name;
for (const auto& it: this->attributes)
res += " " + it.first + "='" + it.second + "'";
res += " " + utils::remove_invalid_xml_chars(it.first) + "='" +
utils::remove_invalid_xml_chars(it.second) + "'";
if (this->closed && !this->has_children() && this->inner.empty())
res += "/>";
else
{
res += ">" + this->inner;
res += ">" + utils::remove_invalid_xml_chars(this->inner);
for (const auto& child: this->children)
res += child->to_string();
if (this->closed)
......@@ -205,7 +206,7 @@ std::string XmlNode::to_string() const
res += "</" + this->name + ">";
}
}
res += this->tail;
res += utils::remove_invalid_xml_chars(this->tail);
return res;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment