From 7d8ce3b5638b8e09313a6218014a307ab98e6289 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Wed, 11 Dec 2013 21:22:06 +0100 Subject: Use XML-sanitized strings when serializing stanzas for the XMPP server --- src/test.cpp | 8 ++++++++ src/xmpp/xmpp_stanza.cpp | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/test.cpp b/src/test.cpp index 958e894..c9427f0 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -97,6 +97,14 @@ int main() }); xml.feed(doc.data(), doc.size(), true); + const std::string doc2 = "coucou\r\n\a"; + 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 */ diff --git a/src/xmpp/xmpp_stanza.cpp b/src/xmpp/xmpp_stanza.cpp index 34ba85f..b6f5a23 100644 --- a/src/xmpp/xmpp_stanza.cpp +++ b/src/xmpp/xmpp_stanza.cpp @@ -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 += "name + ">"; } } - res += this->tail; + res += utils::remove_invalid_xml_chars(this->tail); return res; } -- cgit v1.2.3