Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
LineageTaint: don't follow Return edges after a Call has been traversed
Summary: Blindly following Call then Return edges can yield a huge number of false positive paths as it makes the pathdinfing completely insensitive to the actual call stack (pathfinding could branch into a callee through [Call] and return into a completely different caller through [Return]). When processing a function call, Lineage generates [Summary] edges that can be used instead to correctly follow function calls. One still needs to follow [Return] edges in the beginning of the paths and [Call] in the end, to support sources returned from nested function calls and similarly calls to nested sinks. A future work is to be able to expand up to a certain depth of function calls to see what happens inside instead of simply having a Derive edge generated. Reviewed By: rgrig Differential Revision: D57157099 fbshipit-source-id: 6d4435b157ae6b8a237aab17b291c37f6870d926
- Loading branch information