Sat, 27 Aug 2016 18:16:01 -0500
connection: Add purple_connection_take_error()
This patch adds a purple_connection_take_error() function, which
is functionally equivalent to purple_connection_g_error(), except
that it takes ownership of the passed GError.
This is useful to simplify error handling so that the GError doesn't
have to be freed, or, in the future potentially copied, if it's no
longer needed where it's generated. It can also allow for GErrors
being generated without storing them in a variable. This would be
reasonably common if/when all PurpleConnection errors are passed
in via GError.
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
1 | #include <glib.h> |
|
31891
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
2 | |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
3 | #include "../xmlnode.h" |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
4 | |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
5 | /* |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
6 | * If we really wanted to test the billion laughs attack we would |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
7 | * need to have more than just 4 ha's. But as long as this shorter |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
8 | * document fails to parse, the longer one should also fail to parse. |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
9 | */ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
10 | static void |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
11 | test_xmlnode_billion_laughs_attack(void) { |
|
31891
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
12 | const char *malicious_xml_doc = "<!DOCTYPE root [ <!ENTITY ha \"Ha !\"><!ENTITY ha2 \"&ha; &ha;\"><!ENTITY ha3 \"&ha2; &ha2;\"> ]><root>&ha3;</root>"; |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
13 | |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
14 | /* Uncomment this line if you want to see the error message given by |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
15 | the parser for the above XML document */ |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
16 | /* purple_debug_set_enabled(TRUE); */ |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
17 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
18 | g_assert_null(purple_xmlnode_from_str(malicious_xml_doc, -1)); |
|
31891
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
19 | } |
|
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
20 | |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
21 | #define check_doc_structure(x) { \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
22 | PurpleXmlNode *ping, *child1, *child2; \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
23 | g_assert_nonnull(x); \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
24 | ping = purple_xmlnode_get_child(x, "ping"); \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
25 | g_assert_nonnull(ping); \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
26 | child1 = purple_xmlnode_get_child(ping, "child1"); \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
27 | g_assert_nonnull(child1); \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
28 | child2 = purple_xmlnode_get_child(child1, "child2"); \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
29 | g_assert_nonnull(child2); \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
30 | purple_xmlnode_new_child(child2, "a"); \ |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
31 | \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
32 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_namespace(x)); \ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
33 | /* NOTE: purple_xmlnode_get_namespace() returns the namespace of the element, not the |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
34 | * current default namespace. See http://www.w3.org/TR/xml-names/#defaulting and |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
35 | * http://www.w3.org/TR/xml-names/#dt-defaultNS. |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
36 | */ \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
37 | g_assert_cmpstr("urn:xmpp:ping", ==, purple_xmlnode_get_namespace(ping)); \ |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
38 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_namespace(child1)); \ |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
39 | g_assert_cmpstr("urn:xmpp:ping", ==, purple_xmlnode_get_namespace(child2)); \ |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
40 | /* |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
41 | * This fails (well, actually crashes [the ns is NULL]) unless |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
42 | * purple_xmlnode_new_child() actually sets the element namespace. |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
43 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_namespace(purple_xmlnode_get_child(child2, "a"))); |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
44 | */ \ |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
45 | \ |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
46 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_default_namespace(x)); \ |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
47 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_default_namespace(ping)); \ |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
48 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_default_namespace(child1)); \ |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
49 | g_assert_cmpstr("jabber:client", ==, purple_xmlnode_get_default_namespace(child2)); \ |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
50 | } |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
51 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
52 | static void |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
53 | test_xmlnode_prefixes(void) { |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
54 | const char *xml_doc = |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
55 | "<iq type='get' xmlns='jabber:client' xmlns:ping='urn:xmpp:ping'>" |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
56 | "<ping:ping>" |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
57 | "<child1>" |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
58 | "<ping:child2></ping:child2>" /* xmlns='jabber:child' */ |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
59 | "</child1>" |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
60 | "</ping:ping>" |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
61 | "</iq>"; |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
62 | char *str; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
63 | PurpleXmlNode *xml, *reparsed; |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
64 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
65 | xml = purple_xmlnode_from_str(xml_doc, -1); |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
66 | check_doc_structure(xml); |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
67 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
68 | /* Check that purple_xmlnode_from_str(purple_xmlnode_to_str(xml, NULL), -1) is idempotent. */ |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
69 | str = purple_xmlnode_to_str(xml, NULL); |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
70 | g_assert_nonnull(str); |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
71 | reparsed = purple_xmlnode_from_str(str, -1); |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
72 | g_assert_nonnull(reparsed); |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
73 | check_doc_structure(reparsed); |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
74 | |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
75 | g_free(str); |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
76 | purple_xmlnode_free(xml); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
77 | purple_xmlnode_free(reparsed); |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
78 | } |
|
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
79 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
80 | static void |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
81 | test_strip_prefixes(void) { |
|
32322
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
82 | const char *xml_doc = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
83 | "<cha:active xmlns:cha='http://jabber.org/protocol/chatstates'/>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
84 | "<body>xvlc xvlc</body>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
85 | "<im:html xmlns:im='http://jabber.org/protocol/xhtml-im'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
86 | "<xht:body xmlns:xht='http://www.w3.org/1999/xhtml'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
87 | "<xht:p>xvlc <xht:span style='font-weight: bold;'>xvlc</xht:span></xht:p>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
88 | "</xht:body>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
89 | "</im:html>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
90 | "</message>"; |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
91 | const char *out = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
92 | "<active xmlns:cha='http://jabber.org/protocol/chatstates' xmlns='http://jabber.org/protocol/chatstates'/>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
93 | "<body>xvlc xvlc</body>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
94 | "<html xmlns:im='http://jabber.org/protocol/xhtml-im' xmlns='http://jabber.org/protocol/xhtml-im'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
95 | "<body xmlns:xht='http://www.w3.org/1999/xhtml' xmlns='http://www.w3.org/1999/xhtml'>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
96 | "<p>xvlc <span style='font-weight: bold;'>xvlc</span></p>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
97 | "</body>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
98 | "</html>" |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
99 | "</message>"; |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
100 | char *str; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
101 | PurpleXmlNode *xml; |
|
32322
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
102 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
103 | xml = purple_xmlnode_from_str(xml_doc, -1); |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
104 | g_assert_nonnull(xml); |
|
32322
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
105 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
106 | purple_xmlnode_strip_prefixes(xml); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
107 | str = purple_xmlnode_to_str(xml, NULL); |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
108 | g_assert_cmpstr(out, ==, str); |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
109 | g_free(str); |
|
32322
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
110 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
32322
diff
changeset
|
111 | purple_xmlnode_free(xml); |
|
32322
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
112 | } |
|
5c1dd6d9d57f
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <darkrain42@pidgin.im>
parents:
32321
diff
changeset
|
113 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
114 | gint |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
115 | main(gint argc, gchar **argv) { |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
116 | g_test_init(&argc, &argv, NULL); |
|
31891
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
117 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
118 | g_test_add_func("/xmlnode/billion_laughs_attack", |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
119 | test_xmlnode_billion_laughs_attack); |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
120 | g_test_add_func("/xmlnode/prefixes", |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
121 | test_xmlnode_prefixes); |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
122 | g_test_add_func("/xmlnode/strip_prefixes", |
|
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
123 | test_strip_prefixes); |
|
32321
ae17a89ef666
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <darkrain42@pidgin.im>
parents:
31891
diff
changeset
|
124 | |
|
37607
773815a9a48f
Convert the xmlnode tests to gtester
Gary Kramlich <grim@reaperworld.com>
parents:
34935
diff
changeset
|
125 | return g_test_run(); |
|
31891
186f61a85ac2
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <markdoliner@pidgin.im>
parents:
diff
changeset
|
126 | } |