Navigating to an Address in Linear View and MLIL Redirects to the Wrong Location

Open
#6,451 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp

Research direction

Reproduce the issue by opening the supplied uhttpd binary and navigating to 00409e5c in the Linear MLIL view, then compare the result with Graph view. Trace the navigation handling for MLIL addresses and verify that both views select 00409e5c rather than 00409e58.

Written by the indexing model from the issue text.

Description

Component: UI Effort: Low Impact: Medium UI: Linear

Version and Platform (required):

  • Binary Ninja Version: 4.3.6934-dev (83f374e7)
  • OS: Debian
  • OS Version: 12
  • CPU Architecture: x64

Bug Description:
When attempting to navigate to the address 00409e5c in the linear view, it incorrectly redirects to 00409e58. However, if I switch to graph view (by pressing space) and navigate to the same address, I am taken to the expected location.

Steps To Reproduce:
Please provide all steps required to reproduce the behavior:

  1. Open uhttpd.
  2. In Linear (MLIL) view, navigate to address 00409e5c.
  3. It will incorrectly navigate to 00409e58 instead (303 @ 00409e58 $t8_6#15 = n#14 s< 1 ? 1 : 0).
  4. Switch to Graph view and navigate to the same address, and it will go to the correct location.

Expected Behavior:
It should navigate to the correct line regardless of whether I'm in linear or graph view.

Screenshots/Video Recording:
Image

Binary:
If applicable, please provide us with the binary to help us work with the issue faster. Here are a few options:

uhttpd.zip

Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Vector35/binaryninja-api

All issues in Vector35/binaryninja-api

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.