From 3aeb213dc4c264b7d2c57c9d950c391b0378074b Mon Sep 17 00:00:00 2001 From: kannibalox Date: Fri, 6 Dec 2024 13:00:05 -0500 Subject: [PATCH] Avoid in tinyxml2 responses It's part of the XML-RPC spec, but some clients only accept i4/i8, which should be supported nearly universally. Fixes #1330 --- src/rpc/xmlrpc_tinyxml2.cc | 2 +- test/rpc/xmlrpc_test.cc | 2 +- test/rpc/xmlrpc_test_data.txt | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/rpc/xmlrpc_tinyxml2.cc b/src/rpc/xmlrpc_tinyxml2.cc index 9af60043..29932e3f 100644 --- a/src/rpc/xmlrpc_tinyxml2.cc +++ b/src/rpc/xmlrpc_tinyxml2.cc @@ -333,7 +333,7 @@ print_xmlrpc_fault(int faultCode, std::string faultString, tinyxml2::XMLPrinter* printer->PushText("faultCode"); printer->CloseElement(true); printer->OpenElement("value", true); - printer->OpenElement("int", true); + printer->OpenElement("i4", true); printer->PushText(faultCode); printer->CloseElement(true); printer->CloseElement(true); diff --git a/test/rpc/xmlrpc_test.cc b/test/rpc/xmlrpc_test.cc index c3bfb19b..f3a502a8 100644 --- a/test/rpc/xmlrpc_test.cc +++ b/test/rpc/xmlrpc_test.cc @@ -78,7 +78,7 @@ XmlrpcTest::test_invalid_utf8() { void XmlrpcTest::test_size_limit() { std::string input = "xmlrpc_reflect\xc3\x28"; - std::string expected = "faultCode-509faultStringContent size exceeds maximum XML-RPC limit"; + std::string expected = "faultCode-509faultStringContent size exceeds maximum XML-RPC limit"; std::string output; m_xmlrpc.set_size_limit(1); m_xmlrpc.process(input.c_str(), input.size(), [&output](const char* c, uint32_t l){ output.append(c, l); return true;}); diff --git a/test/rpc/xmlrpc_test_data.txt b/test/rpc/xmlrpc_test_data.txt index 7e0b6167..a58019af 100644 --- a/test/rpc/xmlrpc_test_data.txt +++ b/test/rpc/xmlrpc_test_data.txt @@ -44,32 +44,32 @@ # Invalid - missing method no_such_method41 -faultCode-506faultStringmethod 'no_such_method' not defined +faultCode-506faultStringmethod 'no_such_method' not defined # Invalid - i4 target xmlrpc_reflect41 -faultCode-500faultStringinvalid parameters: target must be a string +faultCode-500faultStringinvalid parameters: target must be a string # Invalid - empty int tag xmlrpc_reflect -faultCode-501faultStringunable to parse empty integer +faultCode-501faultStringunable to parse empty integer # Invalid - empty int text xmlrpc_reflect -faultCode-501faultStringunable to parse empty integer +faultCode-501faultStringunable to parse empty integer # Invalid - broken XML thodCall>test_a41faultCode-503faultStringError=XML_ERROR_PARSING_ELEMENT ErrorID=6 (0x6) Line number=1: XMLElement name=method +faultCode-503faultStringError=XML_ERROR_PARSING_ELEMENT ErrorID=6 (0x6) Line number=1: XMLElement name=method # Invalid - non-integer i4 xmlrpc_reflectstring value -faultCode-501faultStringunable to parse integer value +faultCode-501faultStringunable to parse integer value # Invalid - float i4 xmlrpc_reflect3.14 -faultCode-501faultStringunable to parse integer value +faultCode-501faultStringunable to parse integer value # Invalid - non-boolean boolean xmlrpc_reflectstring value -faultCode-501faultStringunknown boolean value: string value +faultCode-501faultStringunknown boolean value: string value