feat: Add Function module to detect functions returning msg.sender directly or via alias #2753
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a new method
is_returning_msg_sender()
in theFunction
class, enabling detection of Solidity functions that returnmsg.sender
, either directly or through variable aliasing.Motivation
In many smart contract patterns,
msg.sender
is returned through internal functions, often after assignment to local variables or via wrapper functions like_msgSender()
. Detecting such patterns is crucial for accurate static analysis—particularly when assessing function protection or authorization flows.This utility provides foundational support for enhancing other modules involving
msg.sender
(in future PRs ).What’s Covered
The newly added method
Function.is_returning_msg_sender()
returnsTrue
if:msg.sender
msg.sender
Examples:
What's not Covered
msg.sender
:Support for such recursive or wrapper logic will be addressed in a future update.
Closes #2755