// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. let module_size = 19; let string_len = 0x00fffff0 - module_size; print("Allocating backing store: " + (string_len + module_size)); let backing = new ArrayBuffer(string_len + module_size); print("Allocating typed array buffer"); let buffer = new Uint8Array(backing); print("Filling..."); buffer.fill(0x41); print("Setting up array buffer"); // Magic buffer.set([0x00, 0x61, 0x73, 0x6D], 0); // Version buffer.set([0x01, 0x00, 0x00, 0x00], 4); // kUnknownSection (0) buffer.set([0], 8); // Section length buffer.set([0x80, 0x80, 0x80, 0x80, 0x00], 9); // Name length let x = string_len + 1; let b1 = ((x >> 0) & 0x7F) | 0x80; let b2 = ((x >> 7) & 0x7F) | 0x80; let b3 = ((x >> 14) & 0x7F) | 0x80; let b4 = ((x >> 21) & 0x7F); //buffer.set([0xDE, 0xFF, 0xFF, 0x7F], 14); buffer.set([b1, b2, b3, b4], 14); print("Parsing module..."); let m = new WebAssembly.Module(buffer); print("Triggering!"); let c = WebAssembly.Module.customSections(m, "A".repeat(string_len + 1)); assertEquals(0, c.length);