mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-23 01:26:19 +00:00
Use std::strtoll instead of std::stol
This commit is contained in:
@@ -115,7 +115,12 @@ xml_value_to_object(const tinyxml2::XMLNode* elem) {
|
|||||||
}
|
}
|
||||||
return torrent::Object(value_element_child->ToText()->Value());
|
return torrent::Object(value_element_child->ToText()->Value());
|
||||||
} else if (value_element_type == "i4" || value_element_type == "i8" || value_element_type == "int") {
|
} else if (value_element_type == "i4" || value_element_type == "i8" || value_element_type == "int") {
|
||||||
return torrent::Object(std::stol(std::string(value_element->FirstChild()->ToText()->Value())));
|
char* pos;
|
||||||
|
auto str = value_element->FirstChild()->ToText()->Value();
|
||||||
|
auto result = std::strtoll(str, &pos, 10);
|
||||||
|
if (pos == str || *pos != '\0')
|
||||||
|
throw xmlrpc_error(XMLRPC_TYPE_ERROR, "unable to parse integer value");
|
||||||
|
return torrent::Object(result);
|
||||||
} else if (value_element_type == "boolean") {
|
} else if (value_element_type == "boolean") {
|
||||||
auto boolean_text = std::string(value_element->FirstChild()->ToText()->Value());
|
auto boolean_text = std::string(value_element->FirstChild()->ToText()->Value());
|
||||||
if (boolean_text == "1") {
|
if (boolean_text == "1") {
|
||||||
|
|||||||
@@ -53,3 +53,7 @@
|
|||||||
# Invalid - broken XML
|
# Invalid - broken XML
|
||||||
thodCall><methodName>test_a</methodName><params><param><value><i4>41</i4></value></param></params></method
|
thodCall><methodName>test_a</methodName><params><param><value><i4>41</i4></value></param></params></method
|
||||||
<?xml version="1.0"?><methodReponse><fault><struct><member><name>faultCode</name><value><int>-503</int></value></member><member><name>faultString</name><value><string>Error=XML_ERROR_PARSING_ELEMENT ErrorID=6 (0x6) Line number=1: XMLElement name=method</string></value></member></struct></fault></methodReponse>
|
<?xml version="1.0"?><methodReponse><fault><struct><member><name>faultCode</name><value><int>-503</int></value></member><member><name>faultString</name><value><string>Error=XML_ERROR_PARSING_ELEMENT ErrorID=6 (0x6) Line number=1: XMLElement name=method</string></value></member></struct></fault></methodReponse>
|
||||||
|
|
||||||
|
# Invalid - non-integer i4
|
||||||
|
<?xml version="1.0"?><methodCall><methodName>xmlrpc_reflect</methodName><params><param><value><i4>string value</i4></value></param></params></methodCall>
|
||||||
|
<?xml version="1.0"?><methodReponse><fault><struct><member><name>faultCode</name><value><int>-501</int></value></member><member><name>faultString</name><value><string>unable to parse integer value</string></value></member></struct></fault></methodReponse>
|
||||||
|
|||||||
Reference in New Issue
Block a user