HttpRequest: use BStackOrHeapArray

Sometimes we get enough bytes at once from the connection to trigger a
stack overflow. Allocate memory on the heap instead.
This commit is contained in:
Adrien Destugues
2014-02-13 09:36:40 +01:00
parent abcbb5d617
commit 3e358c1fca
+3 -2
View File
@@ -23,6 +23,7 @@
#include <File.h> #include <File.h>
#include <Socket.h> #include <Socket.h>
#include <SecureSocket.h> #include <SecureSocket.h>
#include <StackOrHeapArray.h>
#include <ZlibDecompressor.h> #include <ZlibDecompressor.h>
@@ -699,7 +700,7 @@ BHttpRequest::_MakeRequest()
decompressor.DecompressNext(inputTempBuffer, decompressor.DecompressNext(inputTempBuffer,
bytesRead); bytesRead);
ssize_t size = decompressorStorage.Size(); ssize_t size = decompressorStorage.Size();
char buffer[size]; BStackOrHeapArray<char, 4096> buffer(size);
size = decompressorStorage.Read(buffer, size); size = decompressorStorage.Read(buffer, size);
if (size > 0) { if (size > 0) {
fListener->DataReceived(this, buffer, size); fListener->DataReceived(this, buffer, size);
@@ -720,7 +721,7 @@ BHttpRequest::_MakeRequest()
ssize_t size = decompressorStorage.Size(); ssize_t size = decompressorStorage.Size();
char buffer[size]; char buffer[size];
size = decompressorStorage.Read(buffer, size); size = decompressorStorage.Read(buffer, size);
if (size > 0) { if (fListener != NULL && size > 0) {
fListener->DataReceived(this, buffer, size); fListener->DataReceived(this, buffer, size);
} }
} }