-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Diff-informed queries via primary/secondary abstractions #19586
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
I haven't figured out how to avoid the redundancy between
`getASelected{Source,Sink}Location` in the module and the class. Maybe
we need a strong notion of primary and secondary data-flow
configurations.
For now I've only implemented what XSS.qll needs
|
|
||
| class IsDiffInformed extends DataFlow::DiffInformedQuery { | ||
| // This predicate is overridden to be more precise than the default | ||
| // implementation in order to support secondary secondary data-flow |
Check warning
Code scanning / CodeQL
Comment has repeated word Warning
| } | ||
|
|
||
| module Primary<ConfigSig Config> implements GlobalFlowSig { | ||
| private module Config0 implements FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
| } | ||
| } | ||
|
|
||
| private module C implements FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
| } | ||
| } | ||
|
|
||
| private module C implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
| module FindSinks<DataFlow::ConfigSig Config, DataFlow::SecondaryConfig SC> implements | ||
| DataFlow::GlobalFlowSig | ||
| { | ||
| private module Config0 implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
| } | ||
| } | ||
|
|
||
| private module C implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
|
Superseded by #20386 |
This PR is a proof of concept for how diff-informed queries could be made more high level, reducing hard-to-remember design patterns and simultaneously reducing reverse dependencies and the "module soup" I proposed in #17846.
I've only implemented what's necessary for
XSS.qlso far since I expect a lot of changes to names and APIs.