summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2017-01-24 16:39:18 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-04-20 07:39:02 +0000
commitaf12886a6da78f1a171c8c371ba8a62a4ce23623 (patch)
tree8204e97877a905b46ab0c22cf88ad21e99808b23
parent804d277cd622593141aa664744a4b64a777d8d38 (diff)
[Backport] CVE-2017-5012
Merged: Trigger OOM crash if no memory returned in v8::ArrayBuffer::New and v8::SharedArrayBuffe ... Revision: ca0f957329828c61f02437f640ed8004a549018a BUG=chromium:681843 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true R=jbroman@chromium.org Change-Id: I61a0c2c5cb82646ef91ef0cc54a54178df49a7b2 Review-Url: https://codereview.chromium.org/2658433002 . Cr-Commit-Position: refs/branch-heads/5.6@{#88} Cr-Branched-From: bdd3886218dfe76e8560eb8a18401942452ae859-refs/heads/5.6.326@{#1} Cr-Branched-From: 879f6599eee6e1dfcbe9a24bf688b261c03e9558-refs/heads/master@{#41014} Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--chromium/v8/src/api.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/chromium/v8/src/api.cc b/chromium/v8/src/api.cc
index 5b55008790c..4e058ae4e5f 100644
--- a/chromium/v8/src/api.cc
+++ b/chromium/v8/src/api.cc
@@ -6607,7 +6607,11 @@ Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, size_t byte_length) {
ENTER_V8(i_isolate);
i::Handle<i::JSArrayBuffer> obj =
i_isolate->factory()->NewJSArrayBuffer(i::SharedFlag::kNotShared);
- i::JSArrayBuffer::SetupAllocatingData(obj, i_isolate, byte_length);
+ // TODO(jbroman): It may be useful in the future to provide a MaybeLocal
+ // version that throws an exception or otherwise does not crash.
+ if (!i::JSArrayBuffer::SetupAllocatingData(obj, i_isolate, byte_length)) {
+ i::FatalProcessOutOfMemory("v8::ArrayBuffer::New");
+ }
return Utils::ToLocal(obj);
}
@@ -6803,8 +6807,12 @@ Local<SharedArrayBuffer> v8::SharedArrayBuffer::New(Isolate* isolate,
ENTER_V8(i_isolate);
i::Handle<i::JSArrayBuffer> obj =
i_isolate->factory()->NewJSArrayBuffer(i::SharedFlag::kShared);
- i::JSArrayBuffer::SetupAllocatingData(obj, i_isolate, byte_length, true,
- i::SharedFlag::kShared);
+ // TODO(jbroman): It may be useful in the future to provide a MaybeLocal
+ // version that throws an exception or otherwise does not crash.
+ if (!i::JSArrayBuffer::SetupAllocatingData(obj, i_isolate, byte_length, true,
+ i::SharedFlag::kShared)) {
+ i::FatalProcessOutOfMemory("v8::SharedArrayBuffer::New");
+ }
return Utils::ToLocalShared(obj);
}