Skip to content

Panic index out of bounds: the len is 0 but the index is 0 in core/engine/src/vm/opcode/get/name.rs #4401

@qarmin

Description

@qarmin

Rust code

fn check_file(path: &str) {
    let Ok(file_content) = fs::read(path) else {
        return;
    };
    println!("Checking file: {path}");
    let mut context = Context::default();

    let _result = context.eval(Source::from_bytes(&file_content));
}

when evaluating javascript code(at the bottom should be attached raw, not formatted file - github removes some non-printable characters, so copying from here may not work):

(function(){
 var x=calEal=function(){eval('x')}})();try {calEal()}catch{}

crashes with this info:

thread 'main' (311070) panicked at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/get/name.rs:25:30:
index out of bounds: the len is 0 but the index is 0
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/07d246fc6dc227903da2955b38a59e060539a485/library/std/src/panicking.rs:698:5
   1: core::panicking::panic_fmt
             at /rustc/07d246fc6dc227903da2955b38a59e060539a485/library/core/src/panicking.rs:75:14
   2: core::panicking::panic_bounds_check
             at /rustc/07d246fc6dc227903da2955b38a59e060539a485/library/core/src/panicking.rs:271:5
   3: <usize as core::slice::index::SliceIndex<[T]>>::index
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:265:10
   4: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:18:15
   5: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:3621:9
   6: boa_engine::environments::runtime::declarative::PoisonableEnvironment::get
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/environments/runtime/declarative/mod.rs:300:31
   7: boa_engine::environments::runtime::<impl boa_engine::context::Context>::get_binding
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/environments/runtime/mod.rs:519:24
   8: boa_engine::vm::opcode::get::name::GetName::operation
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/get/name.rs:25:30
   9: boa_engine::vm::opcode::handle_get_name
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/mod.rs:313:17
  10: boa_engine::vm::opcode::<impl boa_engine::context::Context>::execute_bytecode_instruction
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/mod.rs:464:9
  11: core::ops::function::FnOnce::call_once
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
  12: boa_engine::vm::<impl boa_engine::context::Context>::execute_instruction
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:649:9
  13: boa_engine::vm::<impl boa_engine::context::Context>::execute_one
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:674:14
  14: boa_engine::vm::<impl boa_engine::context::Context>::run
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:858:24
  15: boa_engine::builtins::eval::Eval::perform_eval
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/builtins/eval/mod.rs:337:30
  16: boa_engine::vm::opcode::call::CallEval::operation
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/call/mod.rs:69:30
  17: boa_engine::vm::opcode::handle_call_eval
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/mod.rs:313:17
  18: boa_engine::vm::opcode::<impl boa_engine::context::Context>::execute_bytecode_instruction
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/opcode/mod.rs:464:9
  19: core::ops::function::FnOnce::call_once
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
  20: boa_engine::vm::<impl boa_engine::context::Context>::execute_instruction
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:649:9
  21: boa_engine::vm::<impl boa_engine::context::Context>::execute_one
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:674:14
  22: boa_engine::vm::<impl boa_engine::context::Context>::run
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/vm/mod.rs:858:24
  23: boa_engine::script::Script::evaluate
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/script.rs:172:30
  24: boa_engine::context::Context::eval
             at /home/runner/.cargo/git/checkouts/boa-126d820dff07bf57/8ea37c6/core/engine/src/context/mod.rs:202:41
  25: boa::check_file
             at ./src/crates/boa/src/main.rs:33:27
  26: boa::main
             at ./src/crates/boa/src/main.rs:22:9
  27: core::ops::function::FnOnce::call_once
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

compressed.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions