Shared: Generate more value-preserving summaries #19409
Draft
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.
Ideally, we want generated flow summaries to be content-sensitive. That is, a summary for a function such as:
should specify that we read the content
f
fromArgument[*0]
.However, if a function is super complex it may read/write many access paths, and this could cause an explosion in the number of summaries we generate.
To mitigate this, the flow summary generation library puts various restrictions on which callables receive content-sensitive summaries.
When a content-sensitive summary isn't generated, we currently fall back to a taint-configuration-based summary which means we only generate a taint summary and not a value-preserving summary.
This PR adds a "midpoint" in between the content-sensitive value-preserving summary and the taint-based summary so that we now:
This seems to generate much better models on OpenSSL in particular.