mirror of https://github.com/tc39/test262.git
Adding security tests for TypedArray.prototype.fill based on CVE-2016-4734
This commit is contained in:
parent
c2e157240d
commit
a12677ec4c
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2020 Google. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-%typedarray%.prototype.fill
|
||||||
|
description: Security Throws a TypeError if end coercion detaches
|
||||||
|
the buffer
|
||||||
|
info: |
|
||||||
|
22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
|
||||||
|
|
||||||
|
9. If relativeEnd < 0, let final be max((len + relativeEnd), 0); else let final be min(relativeEnd, len).
|
||||||
|
10. If IsDetachedBuffer(O.[[ViewedArrayBuffer]]) is true, throw a TypeError exception.
|
||||||
|
|
||||||
|
includes: [testTypedArray.js, detachArrayBuffer.js]
|
||||||
|
features: [TypedArray]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
testWithTypedArrayConstructors(function(TA) {
|
||||||
|
var sample = new TA(10);
|
||||||
|
|
||||||
|
function detachAndReturnIndex(){
|
||||||
|
$DETACHBUFFER(sample.buffer);
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
sample.fill(0x77, 0, {valueOf: detachAndReturnIndex});
|
||||||
|
}, "Detachment when coercing end should throw TypeError");
|
||||||
|
});
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Copyright (C) 2020 Google. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-%typedarray%.prototype.fill
|
||||||
|
description: Security Throws a TypeError if start coercion detaches
|
||||||
|
the buffer
|
||||||
|
info: |
|
||||||
|
22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
|
||||||
|
|
||||||
|
6. Let relativeStart be ? ToInteger(start).
|
||||||
|
...
|
||||||
|
10. If IsDetachedBuffer(O.[[ViewedArrayBuffer]]) is true, throw a TypeError exception.
|
||||||
|
|
||||||
|
includes: [testTypedArray.js, detachArrayBuffer.js]
|
||||||
|
features: [TypedArray]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
testWithTypedArrayConstructors(function(TA) {
|
||||||
|
var sample = new TA(10);
|
||||||
|
|
||||||
|
function detachAndReturnIndex(){
|
||||||
|
$DETACHBUFFER(sample.buffer);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
sample.fill(0x77, {valueOf: detachAndReturnIndex}, 10);
|
||||||
|
}, "Detachment when coercing start should throw TypeError");
|
||||||
|
});
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Copyright (C) 2020 Google. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-%typedarray%.prototype.fill
|
||||||
|
description: Security Throws a TypeError if value coercion detaches
|
||||||
|
the buffer
|
||||||
|
info: |
|
||||||
|
22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
|
||||||
|
|
||||||
|
5. Otherwise, set value to ? ToNumber(value).
|
||||||
|
...
|
||||||
|
10. If IsDetachedBuffer(O.[[ViewedArrayBuffer]]) is true, throw a TypeError exception.
|
||||||
|
|
||||||
|
includes: [testTypedArray.js, detachArrayBuffer.js]
|
||||||
|
features: [TypedArray]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
testWithTypedArrayConstructors(function(TA) {
|
||||||
|
var sample = new TA(10);
|
||||||
|
|
||||||
|
function detachAndReturnIndex(){
|
||||||
|
$DETACHBUFFER(sample.buffer);
|
||||||
|
return 0x77;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
sample.fill({valueOf: detachAndReturnIndex}, 0, 10);
|
||||||
|
}, "Detachment when coercing value should throw TypeError");
|
||||||
|
});
|
Loading…
Reference in New Issue