tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

byteOffset-validated-against-initial-buffer-length.js (1359B)


      1 // Copyright (C) 2024 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-dataview-buffer-byteoffset-bytelength
      6 description: >
      7  The byteOffset argument is validated against the initial buffer length.
      8 info: |
      9  DataView ( buffer [ , byteOffset [ , byteLength ] ] )
     10 
     11  ...
     12  3. Let offset be ? ToIndex(byteOffset).
     13  ...
     14  5. Let bufferByteLength be ArrayBufferByteLength(buffer, seq-cst).
     15  6. If offset > bufferByteLength, throw a RangeError exception.
     16  ...
     17  10. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DataView.prototype%",
     18      « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »).
     19  ...
     20 
     21  OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
     22 
     23  ...
     24  2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
     25  ...
     26 
     27 features: [Reflect.construct]
     28 ---*/
     29 
     30 let newTarget = Object.defineProperty(function(){}.bind(), "prototype", {
     31  get() {
     32    throw new Test262Error("GetPrototypeFromConstructor not executed");
     33  }
     34 });
     35 
     36 // Zero length buffer.
     37 let ab = new ArrayBuffer(0);
     38 
     39 // Byte offset is larger than the buffer length, which is zero.
     40 let byteOffset = 10;
     41 
     42 assert.throws(RangeError, () => {
     43  Reflect.construct(DataView, [ab, byteOffset], newTarget);
     44 });
     45 
     46 reportCompare(0, 0);