mirror of
https://github.com/tc39/test262.git
synced 2025-05-02 22:10:34 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
58 lines
2.3 KiB
JavaScript
58 lines
2.3 KiB
JavaScript
const verbose = false;
|
|
|
|
{
|
|
// The simplest module with a DataView offset.
|
|
let buffer = new Uint8Array(16);
|
|
buffer[ 8] = 0x00; // \0
|
|
buffer[ 9] = 0x61; // a
|
|
buffer[10] = 0x73; // s
|
|
buffer[11] = 0x6d; // m
|
|
buffer[12] = 0x01; // version
|
|
buffer[13] = 0x00; // version
|
|
buffer[14] = 0x00; // version
|
|
buffer[15] = 0x00; // version
|
|
const view = new DataView(buffer.buffer, 8);
|
|
const module = new WebAssembly.Module(view);
|
|
const instance = new WebAssembly.Instance(module);
|
|
}
|
|
|
|
{
|
|
// A bunch of random offsets into large buffers with mostly valid content.
|
|
const headerSize = 16;
|
|
const roundToHeaderSize = s => Math.round(s / headerSize) * headerSize;
|
|
for (let attempt = 0; attempt < 100; ++attempt) {
|
|
const bufferSize = Math.max(roundToHeaderSize(Math.random() * 0xffff), headerSize * 2);
|
|
let buffer = new Uint8Array(bufferSize);
|
|
for (let i = 0; i < bufferSize; i += headerSize) {
|
|
buffer[ 0 + i] = 0x00; // \0
|
|
buffer[ 1 + i] = 0x61; // a
|
|
buffer[ 2 + i] = 0x73; // s
|
|
buffer[ 3 + i] = 0x6d; // m
|
|
buffer[ 4 + i] = 0x01; // version
|
|
buffer[ 5 + i] = 0x00; // version
|
|
buffer[ 6 + i] = 0x00; // version
|
|
buffer[ 7 + i] = 0x00; // version
|
|
buffer[ 8 + i] = 0x00; // ID = custom
|
|
buffer[ 9 + i] = 0x80 | Math.round(Math.random() * 0x7f); // section byte size, LEB128
|
|
buffer[10 + i] = 0x80 | Math.round(Math.random() * 0x7f); // section byte size, LEB128
|
|
buffer[11 + i] = 0x00 | Math.round(Math.random() * 0x7f); // section byte size, LEB128
|
|
buffer[12 + i] = 0x04; // custom section name length, LEB128
|
|
buffer[13 + i] = 0x42; // B
|
|
buffer[14 + i] = 0x4f; // O
|
|
buffer[15 + i] = 0X4f; // O
|
|
buffer[16 + i] = 0x4d; // M
|
|
}
|
|
const viewOffset = roundToHeaderSize(Math.random() * bufferSize);
|
|
if (verbose)
|
|
print("Buffer size: ", bufferSize, " view offset: ", viewOffset, " view size: ", bufferSize - viewOffset);
|
|
const view = new DataView(buffer.buffer, viewOffset);
|
|
try {
|
|
const module = new WebAssembly.Module(view);
|
|
const instance = new WebAssembly.Instance(module);
|
|
} catch (e) {
|
|
if (verbose)
|
|
print(e);
|
|
}
|
|
}
|
|
}
|