-
Notifications
You must be signed in to change notification settings - Fork 1.9k
C++ IR: Support for global virtual dispatch #2638
New issue
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
Conversation
The IR data flow library now supports virtual dispatch with a library that's similar to `security.TaintTracking`. In particular, it should have the same performance characteristics. The main difference is that non-recursive callers of `flowsFrom` now pass `_` instead of `true` for `boolean allowFromArg`. This change allows flow through `return` to actually work.
|
Performance is good on MySQL and facebookincubator/fizz. There's a lot of room for optimisation, but I'd like to find a database with bad performance before optimising. |
geoffw0
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty happy with this. I've asked a few questions to check my understanding.
I'd like to find a database with bad performance before optimising.
Yes - I imagine in many projects there just won't be enough DataSensitiveCalls for performance issues to manifest. Perhaps run select count(DataSensitiveCall dsc) on LGTM and see which projects come up top?
cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowDispatch.qll
Outdated
Show resolved
Hide resolved
Better clarity was requested in the PR review.
geoffw0
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
The IR data flow library now supports virtual dispatch with a library that's similar to
security.TaintTracking. In particular, it should have the same performance characteristics. The main difference is that non-recursive callers offlowsFromnow pass_instead oftrueforboolean allowFromArg. This change allows flow throughreturnto actually work.