Skip to content

Commit adc22cc

Browse files
authored
Merge pull request #25 from RachelTucker/5_0_fix_buffer_overflow
Updated get object to have specifiable buffer stream
2 parents 1ec096a + 35b8dab commit adc22cc

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
@@ -8015,15 +8015,18 @@ def process_response(self, response):
80158015

80168016

80178017
class GetObjectResponse(AbstractResponse):
8018+
def __init__(self, response, request, buffer_size=None):
8019+
self.buffer_size = buffer_size
8020+
super(GetObjectResponse, self).__init__(response, request)
80188021

80198022
def process_response(self, response):
80208023
self.__check_status_codes__([200, 206])
80218024
stream = self.request.stream
80228025
try:
8023-
bytes_read = response.read()
8026+
bytes_read = response.read(self.buffer_size)
80248027
while bytes_read:
80258028
stream.write(bytes_read)
8026-
bytes_read = response.read()
8029+
bytes_read = response.read(self.buffer_size)
80278030
finally:
80288031
stream.close()
80298032
response.close()
@@ -11333,10 +11336,10 @@ def get_service(self, request):
1133311336
raise TypeError('request for get_service should be of type GetServiceRequest but was ' + request.__class__.__name__)
1133411337
return GetServiceResponse(self.net_client.get_response(request), request)
1133511338

11336-
def get_object(self, request):
11339+
def get_object(self, request, buffer_size=1048576):
1133711340
if not isinstance(request, GetObjectRequest):
1133811341
raise TypeError('request for get_object should be of type GetObjectRequest but was ' + request.__class__.__name__)
11339-
return GetObjectResponse(self.net_client.get_response(request), request)
11342+
return GetObjectResponse(self.net_client.get_response(request), request, buffer_size)
1134011343

1134111344
def head_bucket(self, request):
1134211345
if not isinstance(request, HeadBucketRequest):

0 commit comments

Comments
 (0)