From f7e5f22f98346bb19ca9ac7ea3912fea5b13131c Mon Sep 17 00:00:00 2001 From: "andresp@webrtc.org" Date: Fri, 12 Sep 2014 13:35:05 +0000 Subject: [PATCH] Fix stack limit exceeded in http client. R=henrike@webrtc.org Review URL: https://webrtc-codereview.appspot.com/23419004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7165 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/base/httpclient.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/webrtc/base/httpclient.cc b/webrtc/base/httpclient.cc index 0bf3880fb..fe34f7c9b 100644 --- a/webrtc/base/httpclient.cc +++ b/webrtc/base/httpclient.cc @@ -18,6 +18,7 @@ #include "webrtc/base/httpclient.h" #include "webrtc/base/logging.h" #include "webrtc/base/pathutils.h" +#include "webrtc/base/scoped_ptr.h" #include "webrtc/base/socketstream.h" #include "webrtc/base/stringencode.h" #include "webrtc/base/stringutils.h" @@ -596,8 +597,10 @@ HttpError HttpClient::ReadCacheBody(const std::string& id) { if ((HE_NONE == error) && (HV_HEAD != request().verb) && response().document) { - char buffer[1024 * 64]; - StreamResult result = Flow(stream.get(), buffer, ARRAY_SIZE(buffer), + // Allocate on heap to not explode the stack. + const int array_size = 1024 * 64; + scoped_ptr buffer(new char[array_size]); + StreamResult result = Flow(stream.get(), buffer.get(), array_size, response().document.get()); if (SR_SUCCESS != result) { error = HE_STREAM;