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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user