Skip to content

Commit ca590df

Browse files
authored
Merge pull request #26 from RachelTucker/4_0_fix_buffer_overflow
Updated get object to have specifiable buffer stream
2 parents 32929e1 + d25914f commit ca590df

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

ds3/ds3.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7947,15 +7947,18 @@ def process_response(self, response):
79477947

79487948

79497949
class GetObjectResponse(AbstractResponse):
7950+
def __init__(self, response, request, buffer_size=None):
7951+
self.buffer_size = buffer_size
7952+
super(GetObjectResponse, self).__init__(response, request)
79507953

79517954
def process_response(self, response):
79527955
self.__check_status_codes__([200, 206])
79537956
stream = self.request.stream
79547957
try:
7955-
bytes_read = response.read()
7958+
bytes_read = response.read(self.buffer_size)
79567959
while bytes_read:
79577960
stream.write(bytes_read)
7958-
bytes_read = response.read()
7961+
bytes_read = response.read(self.buffer_size)
79597962
finally:
79607963
stream.close()
79617964
response.close()
@@ -11243,10 +11246,10 @@ def get_service(self, request):
1124311246
raise TypeError('request for get_service should be of type GetServiceRequest but was ' + request.__class__.__name__)
1124411247
return GetServiceResponse(self.net_client.get_response(request), request)
1124511248

11246-
def get_object(self, request):
11249+
def get_object(self, request, buffer_size=1048576):
1124711250
if not isinstance(request, GetObjectRequest):
1124811251
raise TypeError('request for get_object should be of type GetObjectRequest but was ' + request.__class__.__name__)
11249-
return GetObjectResponse(self.net_client.get_response(request), request)
11252+
return GetObjectResponse(self.net_client.get_response(request), request, buffer_size)
1125011253

1125111254
def head_bucket(self, request):
1125211255
if not isinstance(request, HeadBucketRequest):

0 commit comments

Comments
 (0)