Skip to content

Commit 680496e

Browse files
targosruyadorno
authored andcommitted
deps: V8: backport dfcf1e86fac0
Original commit message: [wasm] PostMessage of Memory.buffer should throw PostMessage of an ArrayBuffer that is not detachable should result in a DataCloneError. Bug: chromium:1170176, chromium:961059 Change-Id: Ib89bbc10d2b58918067fd1a90365cad10a0db9ec Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2653810 Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#72415} Refs: v8/v8@dfcf1e8 PR-URL: #37245 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 427968d commit 680496e

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
# Reset this number to 0 on major V8 upgrades.
3636
# Increment by one for each non-official patch applied to deps/v8.
37-
'v8_embedder_string': '-node.45',
37+
'v8_embedder_string': '-node.46',
3838

3939
##### V8 defaults for Node.js #####
4040

deps/v8/src/common/message-template.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,9 @@ namespace internal {
554554
T(DataCloneError, "% could not be cloned.") \
555555
T(DataCloneErrorOutOfMemory, "Data cannot be cloned, out of memory.") \
556556
T(DataCloneErrorDetachedArrayBuffer, \
557-
"An ArrayBuffer is neutered and could not be cloned.") \
557+
"An ArrayBuffer is detached and could not be cloned.") \
558+
T(DataCloneErrorNonDetachableArrayBuffer, \
559+
"ArrayBuffer is not detachable and could not be cloned.") \
558560
T(DataCloneErrorSharedArrayBufferTransferred, \
559561
"A SharedArrayBuffer could not be cloned. SharedArrayBuffer must not be " \
560562
"transferred.") \

deps/v8/src/objects/value-serializer.cc

+5
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,11 @@ Maybe<bool> ValueSerializer::WriteJSArrayBuffer(
877877
WriteVarint(index.FromJust());
878878
return ThrowIfOutOfMemory();
879879
}
880+
if (!array_buffer->is_detachable()) {
881+
ThrowDataCloneError(
882+
MessageTemplate::kDataCloneErrorNonDetachableArrayBuffer);
883+
return Nothing<bool>();
884+
}
880885

881886
uint32_t* transfer_entry = array_buffer_transfer_map_.Find(array_buffer);
882887
if (transfer_entry) {

deps/v8/test/mjsunit/wasm/worker-memory.js

+7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
assertThrows(() => worker.postMessage(memory), Error);
1212
})();
1313

14+
(function TestPostMessageUnsharedMemoryBuffer() {
15+
let worker = new Worker('', {type: 'string'});
16+
let memory = new WebAssembly.Memory({initial: 1, maximum: 2});
17+
18+
assertThrows(() => worker.postMessage(memory.buffer), Error);
19+
})();
20+
1421
// Can't use assert in a worker.
1522
let workerHelpers =
1623
`function assertTrue(value, msg) {

0 commit comments

Comments
 (0)