Skip to content

Commit dbba83f

Browse files
author
Robert Fancsik
authored
Fix typedarray validation in Atomics read_modify_write (#4879)
This patch fixes #4875. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik [email protected]
1 parent d37ff33 commit dbba83f

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

jerry-core/ecma/operations/ecma-atomics-object.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ ecma_validate_shared_integer_typedarray (ecma_value_t typedarray, /**< typedArra
5151
bool waitable) /**< waitable argument */
5252
{
5353
/* 2. */
54-
if (!ecma_is_value_object (typedarray))
54+
if (!ecma_is_typedarray (typedarray))
5555
{
56-
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_OBJECT);
56+
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_TYPED_ARRAY);
5757
}
5858

5959
/* 3-4. */
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright JS Foundation and other contributors, http://js.foundation
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
try {
16+
Atomics.sub({});
17+
assert(false);
18+
} catch (e) {
19+
assert(e instanceof TypeError);
20+
}

tests/test262-esnext-excludelist.xml

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2601,13 +2601,11 @@
26012601
<test id="built-ins/Atomics/add/expected-return-value.js"><reason></reason></test>
26022602
<test id="built-ins/Atomics/add/good-views.js"><reason></reason></test>
26032603
<test id="built-ins/Atomics/add/non-shared-bufferdata.js"><reason></reason></test>
2604-
<test id="built-ins/Atomics/add/non-views.js"><reason></reason></test>
26052604
<test id="built-ins/Atomics/and/bigint/good-views.js"><reason></reason></test>
26062605
<test id="built-ins/Atomics/and/bigint/non-shared-bufferdata.js"><reason></reason></test>
26072606
<test id="built-ins/Atomics/and/expected-return-value.js"><reason></reason></test>
26082607
<test id="built-ins/Atomics/and/good-views.js"><reason></reason></test>
26092608
<test id="built-ins/Atomics/and/non-shared-bufferdata.js"><reason></reason></test>
2610-
<test id="built-ins/Atomics/and/non-views.js"><reason></reason></test>
26112609
<test id="built-ins/Atomics/compareExchange/bad-range.js"><reason></reason></test>
26122610
<test id="built-ins/Atomics/compareExchange/bigint/bad-range.js"><reason></reason></test>
26132611
<test id="built-ins/Atomics/compareExchange/bigint/good-views.js"><reason></reason></test>
@@ -2625,14 +2623,12 @@
26252623
<test id="built-ins/Atomics/exchange/expected-return-value.js"><reason></reason></test>
26262624
<test id="built-ins/Atomics/exchange/good-views.js"><reason></reason></test>
26272625
<test id="built-ins/Atomics/exchange/non-shared-bufferdata.js"><reason></reason></test>
2628-
<test id="built-ins/Atomics/exchange/non-views.js"><reason></reason></test>
26292626
<test id="built-ins/Atomics/isLockFree/expected-return-value.js"><reason></reason></test>
26302627
<test id="built-ins/Atomics/load/bigint/good-views.js"><reason></reason></test>
26312628
<test id="built-ins/Atomics/load/bigint/non-shared-bufferdata.js"><reason></reason></test>
26322629
<test id="built-ins/Atomics/load/expected-return-value.js"><reason></reason></test>
26332630
<test id="built-ins/Atomics/load/good-views.js"><reason></reason></test>
26342631
<test id="built-ins/Atomics/load/non-shared-bufferdata.js"><reason></reason></test>
2635-
<test id="built-ins/Atomics/load/non-views.js"><reason></reason></test>
26362632
<test id="built-ins/Atomics/notify/bad-range.js"><reason></reason></test>
26372633
<test id="built-ins/Atomics/notify/bigint/bad-range.js"><reason></reason></test>
26382634
<test id="built-ins/Atomics/notify/bigint/non-bigint64-typedarray-throws.js"><reason></reason></test>
@@ -2677,7 +2673,6 @@
26772673
<test id="built-ins/Atomics/or/expected-return-value.js"><reason></reason></test>
26782674
<test id="built-ins/Atomics/or/good-views.js"><reason></reason></test>
26792675
<test id="built-ins/Atomics/or/non-shared-bufferdata.js"><reason></reason></test>
2680-
<test id="built-ins/Atomics/or/non-views.js"><reason></reason></test>
26812676
<test id="built-ins/Atomics/store/bad-range.js"><reason></reason></test>
26822677
<test id="built-ins/Atomics/store/bigint/bad-range.js"><reason></reason></test>
26832678
<test id="built-ins/Atomics/store/bigint/good-views.js"><reason></reason></test>
@@ -2694,7 +2689,6 @@
26942689
<test id="built-ins/Atomics/sub/expected-return-value.js"><reason></reason></test>
26952690
<test id="built-ins/Atomics/sub/good-views.js"><reason></reason></test>
26962691
<test id="built-ins/Atomics/sub/non-shared-bufferdata.js"><reason></reason></test>
2697-
<test id="built-ins/Atomics/sub/non-views.js"><reason></reason></test>
26982692
<test id="built-ins/Atomics/wait/bad-range.js"><reason></reason></test>
26992693
<test id="built-ins/Atomics/wait/bigint/bad-range.js"><reason></reason></test>
27002694
<test id="built-ins/Atomics/wait/bigint/cannot-suspend-throws.js"><reason></reason></test>
@@ -2773,7 +2767,6 @@
27732767
<test id="built-ins/Atomics/xor/expected-return-value.js"><reason></reason></test>
27742768
<test id="built-ins/Atomics/xor/good-views.js"><reason></reason></test>
27752769
<test id="built-ins/Atomics/xor/non-shared-bufferdata.js"><reason></reason></test>
2776-
<test id="built-ins/Atomics/xor/non-views.js"><reason></reason></test>
27772770

27782771
<!-- ES2017: Shared Memory and Atomics
27792772
features: [SharedArrayBuffer]
@@ -2782,11 +2775,9 @@
27822775
<test id="built-ins/Atomics/add/bigint/good-views.js"><reason></reason></test>
27832776
<test id="built-ins/Atomics/add/expected-return-value.js"><reason></reason></test>
27842777
<test id="built-ins/Atomics/add/good-views.js"><reason></reason></test>
2785-
<test id="built-ins/Atomics/add/non-views.js"><reason></reason></test>
27862778
<test id="built-ins/Atomics/and/bigint/good-views.js"><reason></reason></test>
27872779
<test id="built-ins/Atomics/and/expected-return-value.js"><reason></reason></test>
27882780
<test id="built-ins/Atomics/and/good-views.js"><reason></reason></test>
2789-
<test id="built-ins/Atomics/and/non-views.js"><reason></reason></test>
27902781
<test id="built-ins/Atomics/compareExchange/bad-range.js"><reason></reason></test>
27912782
<test id="built-ins/Atomics/compareExchange/bigint/bad-range.js"><reason></reason></test>
27922783
<test id="built-ins/Atomics/compareExchange/bigint/good-views.js"><reason></reason></test>
@@ -2796,11 +2787,9 @@
27962787
<test id="built-ins/Atomics/exchange/bigint/good-views.js"><reason></reason></test>
27972788
<test id="built-ins/Atomics/exchange/expected-return-value.js"><reason></reason></test>
27982789
<test id="built-ins/Atomics/exchange/good-views.js"><reason></reason></test>
2799-
<test id="built-ins/Atomics/exchange/non-views.js"><reason></reason></test>
28002790
<test id="built-ins/Atomics/load/bigint/good-views.js"><reason></reason></test>
28012791
<test id="built-ins/Atomics/load/expected-return-value.js"><reason></reason></test>
28022792
<test id="built-ins/Atomics/load/good-views.js"><reason></reason></test>
2803-
<test id="built-ins/Atomics/load/non-views.js"><reason></reason></test>
28042793
<test id="built-ins/Atomics/notify/bad-range.js"><reason></reason></test>
28052794
<test id="built-ins/Atomics/notify/bigint/bad-range.js"><reason></reason></test>
28062795
<test id="built-ins/Atomics/notify/bigint/notify-all-on-loc.js"><reason></reason></test>
@@ -2829,7 +2818,6 @@
28292818
<test id="built-ins/Atomics/or/bigint/good-views.js"><reason></reason></test>
28302819
<test id="built-ins/Atomics/or/expected-return-value.js"><reason></reason></test>
28312820
<test id="built-ins/Atomics/or/good-views.js"><reason></reason></test>
2832-
<test id="built-ins/Atomics/or/non-views.js"><reason></reason></test>
28332821
<test id="built-ins/Atomics/store/bad-range.js"><reason></reason></test>
28342822
<test id="built-ins/Atomics/store/bigint/bad-range.js"><reason></reason></test>
28352823
<test id="built-ins/Atomics/store/bigint/good-views.js"><reason></reason></test>
@@ -2839,7 +2827,6 @@
28392827
<test id="built-ins/Atomics/sub/bigint/good-views.js"><reason></reason></test>
28402828
<test id="built-ins/Atomics/sub/expected-return-value.js"><reason></reason></test>
28412829
<test id="built-ins/Atomics/sub/good-views.js"><reason></reason></test>
2842-
<test id="built-ins/Atomics/sub/non-views.js"><reason></reason></test>
28432830
<test id="built-ins/Atomics/wait/bad-range.js"><reason></reason></test>
28442831
<test id="built-ins/Atomics/wait/bigint/bad-range.js"><reason></reason></test>
28452832
<test id="built-ins/Atomics/wait/bigint/cannot-suspend-throws.js"><reason></reason></test>
@@ -2944,6 +2931,7 @@
29442931
<test id="built-ins/Atomics/waitAsync/bigint/was-woken-before-timeout.js"><reason></reason></test>
29452932
<test id="built-ins/Atomics/waitAsync/false-for-timeout-agent.js"><reason></reason></test>
29462933
<test id="built-ins/Atomics/waitAsync/false-for-timeout.js"><reason></reason></test>
2934+
<test id="built-ins/Atomics/waitAsync/implicit-infinity-for-timeout.js"><reason></reason></test>
29472935
<test id="built-ins/Atomics/waitAsync/nan-for-timeout-agent.js"><reason></reason></test>
29482936
<test id="built-ins/Atomics/waitAsync/negative-index-throws.js"><reason></reason></test>
29492937
<test id="built-ins/Atomics/waitAsync/negative-timeout-agent.js"><reason></reason></test>
@@ -2990,7 +2978,6 @@
29902978
<test id="built-ins/Atomics/xor/bigint/good-views.js"><reason></reason></test>
29912979
<test id="built-ins/Atomics/xor/expected-return-value.js"><reason></reason></test>
29922980
<test id="built-ins/Atomics/xor/good-views.js"><reason></reason></test>
2993-
<test id="built-ins/Atomics/xor/non-views.js"><reason></reason></test>
29942981
<test id="built-ins/TypedArrayConstructors/ctors-bigint/buffer-arg/typedarray-backed-by-sharedarraybuffer.js"><reason></reason></test>
29952982
<test id="built-ins/TypedArrayConstructors/ctors/buffer-arg/typedarray-backed-by-sharedarraybuffer.js"><reason></reason></test>
29962983
<!-- END - ES2017: Shared Memory and Atomics -->

0 commit comments

Comments
 (0)