Closed
Description
Revision
Build
./tools/build.py --clean --debug --compile-flag=-fsanitize=address
--compile-flag=-m32 --compile-flag=-fno-omit-frame-pointer
--compile-flag=-fno-common --compile-flag=-g
--strip=off --system-allocator=on --logging=on
--error-messages=on --profile=es2015-subset
OS
Linux 4.15.0-58-generic #64-Ubuntu x86_64 GNU/Linux
Test case
var arrb = new ArrayBuffer(13);
var d = new DataView(arrb, 12, -Infinity);
d.setFloat32(1, 1);
Backtrace
Run with jerry poc.js
=================================================================
==48937==ERROR: AddressSanitizer: heap-buffer-overflow on address 0xf5100f75 at pc 0x56651652 bp 0xff92a1f8 sp 0xff92a1e8
WRITE of size 4 at 0xf5100f75 thread T0
#0 0x56651651 in ecma_set_typedarray_element /jerryscript/jerry-core/ecma/operations/ecma-typedarray-object.c:140
#1 0x566244e9 in ecma_op_dataview_get_set_view_value /jerryscript/jerry-core/ecma/operations/ecma-dataview-object.c:316
#2 0x565c3f4f in ecma_builtin_dataview_prototype_dispatch_routine /jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-dataview-prototype.c:188
#3 0x56605be1 in ecma_builtin_dispatch_routine /jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.c:1025
#4 0x56605e42 in ecma_builtin_dispatch_call /jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.c:1050
#5 0x56627b53 in ecma_op_function_call /jerryscript/jerry-core/ecma/operations/ecma-function-object.c:729
#6 0x566acbdf in opfunc_call /jerryscript/jerry-core/vm/vm.c:581
#7 0x566c1d83 in vm_execute /jerryscript/jerry-core/vm/vm.c:3622
#8 0x566c2632 in vm_run /jerryscript/jerry-core/vm/vm.c:3742
#9 0x566aba45 in vm_run_global /jerryscript/jerry-core/vm/vm.c:282
#10 0x56576a9b in jerry_run /jerryscript/jerry-core/api/jerry.c:570
#11 0x565733ee in main /jerryscript/jerry-main/main-unix.c:743
#12 0xf779ee80 in __libc_start_main (/lib32/libc.so.6+0x18e80)
#13 0x56570cc0 (/home/xyz/jerryscript/tmpmaster/jerry+0x15cc0)
0xf5100f75 is located 0 bytes to the right of 37-byte region [0xf5100f50,0xf5100f75)
allocated by thread T0 here:
#0 0xf7a44f34 in malloc (/usr/lib32/libasan.so.4+0xe5f34)
#1 0x56656b51 in jmem_heap_alloc /jerryscript/jerry-core/jmem/jmem-heap.c:258
#2 0x56656bc9 in jmem_heap_gc_and_alloc_block /jerryscript/jerry-core/jmem/jmem-heap.c:293
#3 0x565a5342 in jmem_heap_alloc_block /jerryscript/jerry-core/jmem/jmem-heap.c:327
#4 0x565a5342 in ecma_alloc_extended_object /jerryscript/jerry-core/ecma/base/ecma-alloc.c:109
#5 0x565a5342 in ecma_create_object /jerryscript/jerry-core/ecma/base/ecma-helpers.c:81
#6 0x566169b8 in ecma_arraybuffer_new_object /jerryscript/jerry-core/ecma/operations/ecma-arraybuffer-object.c:49
#7 0x56616f18 in ecma_op_create_arraybuffer_object /jerryscript/jerry-core/ecma/operations/ecma-arraybuffer-object.c:149
#8 0x565c3532 in ecma_builtin_arraybuffer_dispatch_construct /jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.c:94
#9 0x566060d6 in ecma_builtin_dispatch_construct /jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.c:1084
#10 0x56629152 in ecma_op_function_construct /jerryscript/jerry-core/ecma/operations/ecma-function-object.c:1077
#11 0x566ad1fe in opfunc_construct /jerryscript/jerry-core/vm/vm.c:665
#12 0x566c1da9 in vm_execute /jerryscript/jerry-core/vm/vm.c:3634
#13 0x566c2632 in vm_run /jerryscript/jerry-core/vm/vm.c:3742
#14 0x566aba45 in vm_run_global /jerryscript/jerry-core/vm/vm.c:282
#15 0x56576a9b in jerry_run /jerryscript/jerry-core/api/jerry.c:570
#16 0x565733ee in main /jerryscript/jerry-main/main-unix.c:743
#17 0xf779ee80 in __libc_start_main (/lib32/libc.so.6+0x18e80)
SUMMARY: AddressSanitizer: heap-buffer-overflow /jerryscript/jerry-core/ecma/operations/ecma-typedarray-object.c:140 in ecma_set_typedarray_element
Shadow bytes around the buggy address:
0x3ea20190: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea201a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea201b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea201c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea201d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x3ea201e0: fa fa fa fa fa fa fa fa fa fa 00 00 00 00[05]fa
0x3ea201f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea20200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea20210: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea20220: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x3ea20230: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==48937==ABORTING