summaryrefslogtreecommitdiff
path: root/test/RpcMethodTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-02-26 19:45:25 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-02-26 19:45:25 +0900
commitad11d746f09977ce151ef6f49dd971f4af451d44 (patch)
tree77c171847cbfb928daeb22fa5a3eab1bb483a1ca /test/RpcMethodTest.cc
parent7a1cba2c596dc6330fd30b6249b24a894b5bea62 (diff)
Only accepts 32 bit integer values from int and i4 elements in XML-RPC.
Fixed overflow in AbstractPaginationRpcMethod::getPaginationRange(). Fixes bug#3494165
Diffstat (limited to 'test/RpcMethodTest.cc')
-rw-r--r--test/RpcMethodTest.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/RpcMethodTest.cc b/test/RpcMethodTest.cc
index 7e927927..d28cc2fa 100644
--- a/test/RpcMethodTest.cc
+++ b/test/RpcMethodTest.cc
@@ -652,6 +652,36 @@ void RpcMethodTest::testTellWaiting()
CPPUNIT_ASSERT_EQUAL(0, res.code);
resParams = downcast<List>(res.param);
CPPUNIT_ASSERT_EQUAL((size_t)3, resParams->size());
+
+ // offset = INT32_MAX
+ req.params->set(0, Integer::g(INT32_MAX));
+ req.params->set(1, Integer::g(1));
+ res = m.execute(req, e_.get());
+ CPPUNIT_ASSERT_EQUAL(0, res.code);
+ resParams = downcast<List>(res.param);
+ CPPUNIT_ASSERT_EQUAL((size_t)0, resParams->size());
+ // num = INT32_MAX
+ req.params->set(0, Integer::g(1));
+ req.params->set(1, Integer::g(INT32_MAX));
+ res = m.execute(req, e_.get());
+ CPPUNIT_ASSERT_EQUAL(0, res.code);
+ resParams = downcast<List>(res.param);
+ CPPUNIT_ASSERT_EQUAL((size_t)3, resParams->size());
+ // offset=INT32_MAX and num = INT32_MAX
+ req.params->set(0, Integer::g(INT32_MAX));
+ req.params->set(1, Integer::g(INT32_MAX));
+ res = m.execute(req, e_.get());
+ CPPUNIT_ASSERT_EQUAL(0, res.code);
+ resParams = downcast<List>(res.param);
+ CPPUNIT_ASSERT_EQUAL((size_t)0, resParams->size());
+ // offset=INT32_MIN and num = INT32_MAX
+ req.params->set(0, Integer::g(INT32_MIN));
+ req.params->set(1, Integer::g(INT32_MAX));
+ res = m.execute(req, e_.get());
+ CPPUNIT_ASSERT_EQUAL(0, res.code);
+ resParams = downcast<List>(res.param);
+ CPPUNIT_ASSERT_EQUAL((size_t)0, resParams->size());
+
// negative offset
req = RpcRequest(TellWaitingRpcMethod::getMethodName(), List::g());
req.params->append(Integer::g(-1));