You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ObjC] User cannot override call type of objc_msgSend calls #7315
Bug Description:
When the Objective-C workflow runs, it applies call type adjustments to calls to objc_msgSend based on the selector. However, the selector does not have type information and does not represent variadic functions. It is useful in these cases for the user to be able to override the call type of a specific message send to refine the type that the Objective-C workflow applied.
Steps To Reproduce:
Open /usr/libexec/syspolicyd on recent macOS.
Go to -[SPSamplingTasking description]
Right click on the call to objc_msgSend and try to override the call type from the type inferred by the Objective-C workflow:
Calling SetAutoCallTypeAdjustment during a workflow activity overrides any call type override set by the user, even if the new confidence is lower than the confidence on the user's adjustment (full confidence for an adjustment entered via the UI).
The Objective-C workflow sets its auto call type override with full confidence. It has incomplete information (no types and the number of arguments is a minimum) and so should have a lower confidence.
Activity
bdash commentedon Aug 27, 2025
There are two sides to this:
SetAutoCallTypeAdjustmentduring a workflow activity overrides any call type override set by the user, even if the new confidence is lower than the confidence on the user's adjustment (full confidence for an adjustment entered via the UI).bdash commentedon Apr 8, 2026
Those two points were fixed by https://github.com/Vector35/binaryninja/pull/1205 and #7371, so this works in the latest 5.2 stable.