Hi! We found a crashing test case when running the fuzz_eval fuzzing driver.
JS input:
let x = BigInt("1234567890123456777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777890");
console.log(x|x);
ASAN output:
=================================================================
==3671288==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x618000001c7f at pc 0x0000005c7ca7 bp 0x7ffef5894550 sp 0x7ffef5894548
WRITE of size 1 at 0x618000001c7f thread T0
#0 0x5c7ca6 in limb_to_a /src/quickjs/quickjs.c:11832:18
#1 0x5c7ca6 in js_bigint_to_string1 /src/quickjs/quickjs.c:11944:25
#2 0x5c802d in js_bigint_to_string /src/quickjs/quickjs.c:12815:12
#3 0x5c802d in js_print_value /src/quickjs/quickjs.c:13518:27
#4 0x52e714 in JS_PrintValueInternal /src/quickjs/quickjs.c:13634:5
#5 0x52e714 in JS_PrintValue /src/quickjs/quickjs.c:13646:5
#6 0x7aa38b in js_print /src/quickjs/quickjs-libc.c:4031:13
#7 0x7a9e59 in js_console_log /src/quickjs/quickjs-libc.c:4042:11
#8 0x4e211f in js_call_c_function /src/quickjs/quickjs.c:16570:19
#9 0x5308a5 in JS_CallInternal /src/quickjs/quickjs.c:16765:16
#10 0x53c8ac in JS_CallInternal /src/quickjs/quickjs.c:17177:27
#11 0x56a261 in JS_CallFree /src/quickjs/quickjs.c:19349:19
#12 0x56a261 in JS_EvalFunctionInternal /src/quickjs/quickjs.c:35629:19
#13 0x59348b in __JS_EvalInternal /src/quickjs/quickjs.c:35762:19
#14 0x56bf91 in JS_EvalInternal /src/quickjs/quickjs.c:35788:11
#15 0x56c2da in JS_EvalThis /src/quickjs/quickjs.c:35822:11
#16 0x56c2da in JS_Eval /src/quickjs/quickjs.c:35830:12
#17 0x4df515 in LLVMFuzzerTestOneInput /src/quickjs/fuzz/fuzz_eval.c:38:19
0x618000001c7f is located 1 bytes to the left of 770-byte region [0x618000001c80,0x618000001f82)
allocated by thread T0 here:
#0 0x4a1fa6 in __interceptor_malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:69:3
#1 0x5a5699 in js_def_malloc /src/quickjs/quickjs.c:1672:11
#2 0x5c6c17 in js_malloc_rt /src/quickjs/quickjs.c:1332:12
#3 0x5c6c17 in js_malloc /src/quickjs/quickjs.c:1363:11
#4 0x5c6c17 in js_bigint_to_string1 /src/quickjs/quickjs.c:11919:15
#5 0x5c802d in js_bigint_to_string /src/quickjs/quickjs.c:12815:12
#6 0x5c802d in js_print_value /src/quickjs/quickjs.c:13518:27
#7 0x52e714 in JS_PrintValueInternal /src/quickjs/quickjs.c:13634:5
#8 0x52e714 in JS_PrintValue /src/quickjs/quickjs.c:13646:5
#9 0x7aa38b in js_print /src/quickjs/quickjs-libc.c:4031:13
#10 0x7a9e59 in js_console_log /src/quickjs/quickjs-libc.c:4042:11
#11 0x4e211f in js_call_c_function /src/quickjs/quickjs.c:16570:19
#12 0x5308a5 in JS_CallInternal /src/quickjs/quickjs.c:16765:16
#13 0x53c8ac in JS_CallInternal /src/quickjs/quickjs.c:17177:27
#14 0x56a261 in JS_CallFree /src/quickjs/quickjs.c:19349:19
#15 0x56a261 in JS_EvalFunctionInternal /src/quickjs/quickjs.c:35629:19
#16 0x59348b in __JS_EvalInternal /src/quickjs/quickjs.c:35762:19
#17 0x56bf91 in JS_EvalInternal /src/quickjs/quickjs.c:35788:11
#18 0x56c2da in JS_EvalThis /src/quickjs/quickjs.c:35822:11
#19 0x56c2da in JS_Eval /src/quickjs/quickjs.c:35830:12
#20 0x4df515 in LLVMFuzzerTestOneInput /src/quickjs/fuzz/fuzz_eval.c:38:19
SUMMARY: AddressSanitizer: heap-buffer-overflow /src/quickjs/quickjs.c:11832:18 in limb_to_a
Hi! We found a crashing test case when running the
fuzz_evalfuzzing driver.JS input:
ASAN output: