diff --git a/swift3/request.py b/swift3/request.py index 617c3b30..a3be1d25 100644 --- a/swift3/request.py +++ b/swift3/request.py @@ -663,6 +663,10 @@ class Request(swob.Request): raise InvalidArgument(param, self.params[param], err_msg) + if not isinstance(value, int): + # check the instance because int() could build + # a long instance + raise ValueError except ValueError: err_msg = 'Provided %s not an integer or within ' \ 'integer range' % param diff --git a/swift3/test/unit/test_request.py b/swift3/test/unit/test_request.py index 4b6fd4c3..0841daf3 100644 --- a/swift3/test/unit/test_request.py +++ b/swift3/test/unit/test_request.py @@ -179,6 +179,13 @@ class TestRequest(Swift3TestCase): with self.assertRaises(InvalidArgument): s3req.get_validated_param('max-keys', 0, 0) + # a param in the out of the integer range + s3req = create_s3request_with_param('max-keys', '1' * 30) + with self.assertRaises(InvalidArgument) as result: + s3req.get_validated_param('max-keys', 1) + self.assertTrue( + 'not an integer or within integer range' in result.exception.body) + if __name__ == '__main__': unittest.main()