Mercurial > pidgin.yaz
annotate libpurple/tests/test_xmlnode.c @ 32636:a617a949e545
Doxygen was complaining about this not being a valid whatchamadinger,
so escape it.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 18 Sep 2011 20:20:02 +0000 |
parents | 8d3b5853b017 |
children |
rev | line source |
---|---|
32136
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
1 #include <string.h> |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
2 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
3 #include "tests.h" |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
4 #include "../xmlnode.h" |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
5 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
6 /* |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
7 * If we really wanted to test the billion laughs attack we would |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
8 * need to have more than just 4 ha's. But as long as this shorter |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
9 * document fails to parse, the longer one should also fail to parse. |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
10 */ |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
11 START_TEST(test_xmlnode_billion_laughs_attack) |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
12 { |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
13 const char *malicious_xml_doc = "<!DOCTYPE root [ <!ENTITY ha \"Ha !\"><!ENTITY ha2 \"&ha; &ha;\"><!ENTITY ha3 \"&ha2; &ha2;\"> ]><root>&ha3;</root>"; |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
14 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
15 /* Uncomment this line if you want to see the error message given by |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
16 the parser for the above XML document */ |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
17 /* purple_debug_set_enabled(TRUE); */ |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
18 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
19 fail_if(xmlnode_from_str(malicious_xml_doc, -1), |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
20 "xmlnode_from_str() returned an XML tree, but we didn't want it to"); |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
21 } |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
22 END_TEST |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
23 |
32498
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
24 #define check_doc_structure(x) { \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
25 xmlnode *ping, *child1, *child2; \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
26 fail_if(x == NULL, "Failed to parse document"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
27 ping = xmlnode_get_child(x, "ping"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
28 fail_if(ping == NULL, "Failed to find 'ping' child"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
29 child1 = xmlnode_get_child(ping, "child1"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
30 fail_if(child1 == NULL, "Failed to find 'child1'"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
31 child2 = xmlnode_get_child(child1, "child2"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
32 fail_if(child2 == NULL, "Failed to find 'child2'"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
33 xmlnode_new_child(child2, "a"); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
34 \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
35 assert_string_equal("jabber:client", xmlnode_get_namespace(x)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
36 /* NOTE: xmlnode_get_namespace() returns the namespace of the element, not the |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
37 * current default namespace. See http://www.w3.org/TR/xml-names/#defaulting and |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
38 * http://www.w3.org/TR/xml-names/#dt-defaultNS. |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
39 */ \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
40 assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(ping)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
41 assert_string_equal("jabber:client", xmlnode_get_namespace(child1)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
42 assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(child2)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
43 /* |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
44 * This fails (well, actually crashes [the ns is NULL]) unless |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
45 * xmlnode_new_child() actually sets the element namespace. |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
46 assert_string_equal("jabber:client", xmlnode_get_namespace(xmlnode_get_child(child2, "a"))); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
47 */ \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
48 \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
49 assert_string_equal("jabber:client", xmlnode_get_default_namespace(x)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
50 assert_string_equal("jabber:client", xmlnode_get_default_namespace(ping)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
51 assert_string_equal("jabber:client", xmlnode_get_default_namespace(child1)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
52 assert_string_equal("jabber:client", xmlnode_get_default_namespace(child2)); \ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
53 } |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
54 |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
55 START_TEST(test_xmlnode_prefixes) |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
56 { |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
57 const char *xml_doc = |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
58 "<iq type='get' xmlns='jabber:client' xmlns:ping='urn:xmpp:ping'>" |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
59 "<ping:ping>" |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
60 "<child1>" |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
61 "<ping:child2></ping:child2>" /* xmlns='jabber:child' */ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
62 "</child1>" |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
63 "</ping:ping>" |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
64 "</iq>"; |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
65 char *str; |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
66 xmlnode *xml, *reparsed; |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
67 |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
68 xml = xmlnode_from_str(xml_doc, -1); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
69 check_doc_structure(xml); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
70 |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
71 /* Check that xmlnode_from_str(xmlnode_to_str(xml, NULL), -1) is idempotent. */ |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
72 str = xmlnode_to_str(xml, NULL); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
73 fail_if(str == NULL, "Failed to serialize XMLnode"); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
74 reparsed = xmlnode_from_str(str, -1); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
75 fail_if(reparsed == NULL, "Failed to reparse xml document"); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
76 check_doc_structure(reparsed); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
77 |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
78 g_free(str); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
79 xmlnode_free(xml); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
80 xmlnode_free(reparsed); |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
81 } |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
82 END_TEST |
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
83 |
32499
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
84 |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
85 START_TEST(test_strip_prefixes) |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
86 { |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
87 const char *xml_doc = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
88 "<cha:active xmlns:cha='http://jabber.org/protocol/chatstates'/>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
89 "<body>xvlc xvlc</body>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
90 "<im:html xmlns:im='http://jabber.org/protocol/xhtml-im'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
91 "<xht:body xmlns:xht='http://www.w3.org/1999/xhtml'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
92 "<xht:p>xvlc <xht:span style='font-weight: bold;'>xvlc</xht:span></xht:p>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
93 "</xht:body>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
94 "</im:html>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
95 "</message>"; |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
96 const char *out = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
97 "<active xmlns:cha='http://jabber.org/protocol/chatstates' xmlns='http://jabber.org/protocol/chatstates'/>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
98 "<body>xvlc xvlc</body>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
99 "<html xmlns:im='http://jabber.org/protocol/xhtml-im' xmlns='http://jabber.org/protocol/xhtml-im'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
100 "<body xmlns:xht='http://www.w3.org/1999/xhtml' xmlns='http://www.w3.org/1999/xhtml'>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
101 "<p>xvlc <span style='font-weight: bold;'>xvlc</span></p>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
102 "</body>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
103 "</html>" |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
104 "</message>"; |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
105 char *str; |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
106 xmlnode *xml; |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
107 |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
108 xml = xmlnode_from_str(xml_doc, -1); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
109 fail_if(xml == NULL, "Failed to parse XML"); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
110 |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
111 xmlnode_strip_prefixes(xml); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
112 str = xmlnode_to_str(xml, NULL); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
113 assert_string_equal_free(out, str); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
114 |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
115 xmlnode_free(xml); |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
116 } |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
117 END_TEST |
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
118 |
32136
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
119 Suite * |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
120 xmlnode_suite(void) |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
121 { |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
122 Suite *s = suite_create("Utility Functions"); |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
123 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
124 TCase *tc = tcase_create("xmlnode"); |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
125 tcase_add_test(tc, test_xmlnode_billion_laughs_attack); |
32498
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
126 tcase_add_test(tc, test_xmlnode_prefixes); |
32499
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32498
diff
changeset
|
127 tcase_add_test(tc, test_strip_prefixes); |
32498
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
32136
diff
changeset
|
128 |
32136
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
129 suite_add_tcase(s, tc); |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
130 |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
131 return s; |
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
132 } |