Source code

Revision control

Copy as Markdown

Other Tools

function testGetter1() {
let s1 = serialize(new SharedArrayBuffer(8), undefined, {SharedArrayBuffer: "allow"});
let s2 = serialize([]);
let evilOpts = {
get SharedArrayBuffer() {
s2.clonebuffer = s1.arraybuffer;
return "allow";
}
};
let ex = null;
try {
deserialize(s2, evilOpts);
} catch (e) {
ex = e;
}
assertEq(ex.toString().includes("cannot allow shared memory"), true);
}
testGetter1();
function testGetter2() {
let serialized = serialize([1, 2, 3]);
let evilOpts = {
get scope() {
serialized.clonebuffer = new ArrayBuffer(serialized.clonebuffer.length);
return "SameProcess";
}
};
let ex = null;
try {
deserialize(serialized, evilOpts);
} catch (e) {
ex = e;
}
assertEq(ex.toString().includes("Cannot use less restrictive scope"), true);
}
testGetter2();