self.assertEqual(xmlrpclib.loads(strg)[0][0], value)
self.assertEqual(xmlrpclib.loads(strg)[1], methodname)
+ def test_dump_escape_methodname(self):
+ payload = 'foo</methodName><injected attr="evil"/><methodName>bar'
+ s = xmlrpclib.dumps((), methodname=payload)
+ self.assertIn(
+ '<methodName>foo</methodName><injected attr="evil"/>'
+ '<methodName>bar</methodName>', s
+ )
+ self.assertNotIn('<injected attr="evil"/>', s)
+ load, m = xmlrpclib.loads(s)
+ self.assertEqual(m, payload)
+
def test_dump_bytes(self):
sample = b"my dog has fleas"
self.assertEqual(sample, xmlrpclib.Binary(sample))
data = (
xmlheader,
"<methodCall>\n"
- "<methodName>", methodname, "</methodName>\n",
+ "<methodName>", escape(methodname), "</methodName>\n",
data,
"</methodCall>\n"
)