DynamoRIO / DynamoRIO/dynamorio
CRASH standalone mode decoding a small PC < 40K
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
Calling `decode_from_copy()` on an encoded instruction whose previous instruction's address is 1 results in crash in `get_app_pc_from_intercept_pc()`.
```
dynamorio.dll!get_app_pc_from_intercept_pc(unsigned char * pc) Line 1462 C
dynamorio.dll!get_app_pc_from_intercept_pc_if_necessary(unsigned char * pc) Line 572 C
dynamorio.dll!instr_set_translation(_instr_t * instr, unsigned char * addr) Line 1151 C
dynamorio.dll!decode_common(_dcontext_t * dcontext, unsigned char * pc, unsigned char * orig_pc, _instr_t * instr) Line 2678 C
dynamorio.dll!decode_from_copy(void * drcontext, unsigned char * copy_pc, unsigned char * orig_pc, _instr_t * instr) Line 2707 C
tool.drcachesim.invariant_checker_test.exe!invariant_checker_t::parallel_shard_memref(void * shard_data, const _memref_t & memref) Line 424 C++
tool.drcachesim.invariant_checker_test.exe!invariant_checker_t::process_memref(const _memref_t & memref) Line 613 C++
tool.drcachesim.invariant_checker_test.exe!`anonymous namespace'::run_checker(const std::vector<_memref_t,std::allocator<_memref_t>> & memrefs, bool expect_error, __int64 error_tid, unsigned __int64 error_refs, const std::string & expected_message, const std::string & toprint_if_fail) Line 81 C++
tool.drcachesim.invariant_checker_test.exe!`anonymous namespace'::check_repeated_syscall_with_same_pc() Line 511 C++
tool.drcachesim.invariant_checker_test.exe!main(int argc, const char * * argv) Line 547 C++
```
Contributor guide
Assessment
This issue has not been assessed yet.