We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
The controls predicate from GuardCondition does not detect influence across function boundaries. Is this intended behavior?
controls
GuardCondition
Here is the code for my example. Influence from condition in line 23 is detected but not from line 14.
condition
Similarly the influence on call() in line 30 is detected but not on line 8.
call()
#include <exception> void call() { } void call_wrapper() { call(); // not detected as controlled } void check_condition(bool condition) { if (condition) // not detected as controlling { throw std::exception(); } } void my_fn(bool outer, bool condition) { if (condition) // detected as controlling { throw std::exception(); } check_condition(condition); call(); // detected as controlled call_wrapper(); }
import cpp import semmle.code.cpp.controlflow.IRGuards from Variable v, VariableAccess va, GuardCondition cond, Call c, int line where c.getTarget().getName() = "call" and va.getTarget() = v and v.getName() = "condition" and cond.getAChild*() = va and cond.controls(c.getBasicBlock(), _) and line = va.getLocation().getStartLine() select v, va, cond, c, line
| v | va | cond | c | line | +-----------+-----------+-----------+--------------+------+ | condition | condition | condition | call to call | 23 |
CodeQL version: 2.19.3
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The
controls
predicate fromGuardCondition
does not detect influence across function boundaries. Is this intended behavior?Here is the code for my example. Influence from
condition
in line 23 is detected but not from line 14.Similarly the influence on
call()
in line 30 is detected but not on line 8.CodeQL version: 2.19.3
The text was updated successfully, but these errors were encountered: