Add check the range of partNumber for Upload part.

Change-Id: If6e2391362ba20801e7a06cd4aa7e136bfc295ff
This commit is contained in:
Masaki Tsukuda
2015-01-13 15:42:39 +09:00
parent 9a95fc22a5
commit bb6c362082
2 changed files with 25 additions and 2 deletions

View File

@@ -94,10 +94,12 @@ class PartController(Controller):
'Unexpected query string parameter')
try:
# TODO: check the range of partNumber
part_number = int(req.params['partNumber'])
if part_number < 1 or DEFAULT_MAX_PARTS < part_number:
raise Exception()
except Exception:
err_msg = 'Part number must be an integer'
err_msg = 'Part number must be an integer between 1 and %d,' \
' inclusive' % DEFAULT_MAX_PARTS
raise InvalidArgument('partNumber', req.params['partNumber'],
err_msg)

View File

@@ -391,6 +391,27 @@ class TestSwift3MultiUpload(Swift3TestCase):
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
req = Request.blank('/bucket/object?partNumber=invalid&uploadId=X',
environ={'REQUEST_METHOD': 'PUT'},
headers={'Authorization': 'AWS test:tester:hmac'},
body='part object')
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
req = Request.blank('/bucket/object?partNumber=0&uploadId=X',
environ={'REQUEST_METHOD': 'PUT'},
headers={'Authorization': 'AWS test:tester:hmac'},
body='part object')
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
req = Request.blank('/bucket/object?partNumber=1001&uploadId=X',
environ={'REQUEST_METHOD': 'PUT'},
headers={'Authorization': 'AWS test:tester:hmac'},
body='part object')
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
@s3acl
def test_object_upload_part(self):
req = Request.blank('/bucket/object?partNumber=1&uploadId=X',