Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] InvalidJumpTarget #53

Closed
thevaizman opened this issue Aug 25, 2023 · 1 comment
Closed

[BUG] InvalidJumpTarget #53

thevaizman opened this issue Aug 25, 2023 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@thevaizman
Copy link
Collaborator

Describe the Bug

The following contract does not seem to be compiled by solc, but it does seem to be a valid contract whose code can be executed. See here on etherscan.
I don't know if we should or shouldn't expect the SLA to crash on this one.

Contract address: 0x300eba9be2206be4d19aa47e3e556dbc7c804a64
Contract code:

0x60606040523615610053576000357c01000000000000000000000000000000000000000000000000000000009004806329b5b30c146100b657806341c0e1b5146100d5578063e5225381146100e257610053565b6100b45b60003411156100b15760583373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15346040518082815260200191505060405180910390a35b5b565b005b6100d3600480359060200180359060200180359060200150610249565b005b6100e06004506100ef565b005b6100ed600450610183565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018057600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561024657600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660003073ffffffffffffffffffffffffffffffffffffffff1631604051809050600060405180830381858888f19350505050505b5b565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561032c578390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8484604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506000604051808303816000876161da5a03f115610002575050505b5b5050505056

I am getting the following error:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Errors { payloads: [Located { location: 808, payload: Execution(InvalidJumpTarget { offset: 2 }) }] }', src/commands.rs:13:37
stack backtrace:
   0:        0x1021b4a1c - std::backtrace_rs::backtrace::libunwind::trace::h63c1c2c6ab21e780
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:        0x1021b4a1c - std::backtrace_rs::backtrace::trace_unsynchronized::hf38aadaccf972d0c
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x1021b4a1c - std::sys_common::backtrace::_print_fmt::hbc7fc8ab62c7587a
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:65:5
   3:        0x1021b4a1c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3fbf720fbb1cb41b
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:44:22
   4:        0x1021c9010 - core::fmt::rt::Argument::fmt::h6f942517dda9fa22
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/rt.rs:138:9
   5:        0x1021c9010 - core::fmt::write::h8ab6230d6f2a4204
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/mod.rs:1094:21
   6:        0x1021b2a04 - std::io::Write::write_fmt::h15ecdca1916a179e
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/io/mod.rs:1713:15
   7:        0x1021b4870 - std::sys_common::backtrace::_print::hb9cd8d0f949f9219
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:47:5
   8:        0x1021b4870 - std::sys_common::backtrace::print::hb6e94bab886a9ccf
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:34:9
   9:        0x1021b5bec - std::panicking::default_hook::{{closure}}::h4a0e30e90cb1c7bb
  10:        0x1021b59f4 - std::panicking::default_hook::h0bb5bbf65ac7c64d
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:288:9
  11:        0x1021b605c - std::panicking::rust_panic_with_hook::h17facd9c53870157
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:705:13
  12:        0x1021b5f68 - std::panicking::begin_panic_handler::{{closure}}::h9eab8195c369d860
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:597:13
  13:        0x1021b4dfc - std::sys_common::backtrace::__rust_end_short_backtrace::hce5f67454da3493d
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:151:18
  14:        0x1021b5cdc - rust_begin_unwind
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:593:5
  15:        0x1021d9f80 - core::panicking::panic_fmt::hc7e96873bfc1c7ba
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/panicking.rs:67:14
  16:        0x1021da26c - core::result::unwrap_failed::h364bae7050cb2efa
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/result.rs:1651:5
  17:        0x1020a34a8 - sla_cli::commands::get_json_storage_layout::h667c14d585433fa9
  18:        0x1020a5d1c - sla_cli::main::h3a5bf01e23cf1292
  19:        0x1020a1e7c - std::sys_common::backtrace::__rust_begin_short_backtrace::h83029d05e0469e3b
  20:        0x1020a8f20 - std::rt::lang_start::{{closure}}::h4a037cc75548c15c
  21:        0x1021aea88 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h0872b58b4b202afc
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/ops/function.rs:284:13
  22:        0x1021aea88 - std::panicking::try::do_call::h39edea2b099e07e3
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
  23:        0x1021aea88 - std::panicking::try::hd1df5ffdbf835c25
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
  24:        0x1021aea88 - std::panic::catch_unwind::hba89886376a265f0
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
  25:        0x1021aea88 - std::rt::lang_start_internal::{{closure}}::h04840a28f7ac1ef1
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:48
  26:        0x1021aea88 - std::panicking::try::do_call::h34a9b7463a9e44fc
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
  27:        0x1021aea88 - std::panicking::try::h8b95270d94b64a06
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
  28:        0x1021aea88 - std::panic::catch_unwind::h7d1422129a9026e1
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
  29:        0x1021aea88 - std::rt::lang_start_internal::h434fe84e11a92429
                               at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:20
  30:        0x1020a6c28 - _main

To Reproduce

Steps to reproduce the behavior:

  1. Build the CLI
  2. Run the cli with:
target/release/sla-cli -b 0x60606040523615610053576000357c01000000000000000000000000000000000000000000000000000000009004806329b5b30c146100b657806341c0e1b5146100d5578063e5225381146100e257610053565b6100b45b60003411156100b15760583373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15346040518082815260200191505060405180910390a35b5b565b005b6100d3600480359060200180359060200180359060200150610249565b005b6100e06004506100ef565b005b6100ed600450610183565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018057600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561024657600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660003073ffffffffffffffffffffffffffffffffffffffff1631604051809050600060405180830381858888f19350505050505b5b565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561032c578390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8484604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506000604051808303816000876161da5a03f115610002575050505b5b5050505056
  1. Error

Expected Behavior

Contract should be processed.

@thevaizman thevaizman added the bug Something isn't working label Aug 25, 2023
@iamrecursion
Copy link
Contributor

This is not a bug in the analyzer. The analyzer is returning errors as expected due to what it considers to be malformed bytecode. The errors are not being handled properly in the CLI at this stage.

I have filed #56 to introduce a permissive errors mode that would let the analysis continue in the presence of certain kinds of errors, but for now I'm going to close this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants