-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Shared: restrict flow after using implicit read #17262
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
d550718
to
5879490
Compare
5879490
to
babac33
Compare
babac33
to
781e753
Compare
This reveals that some tests were passing for the wrong reasons. See github#17275
The 'first' field is seen as a TaintInheritingContent, which means any read step for 'first' becomes a taint step too. This type of taint step does not permit an implicit read before it, because it wasn't contributed by a configuration. So there is no way for the taint to get out of the collection content before the taint step through '.first'. The test previously passed because an implicit read at once of the earlier sinks could follow use-use flow down to the receiver of .first, allowing it to escape the collection content.
781e753
to
8df7fbf
Compare
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.
Looks correct to me.
Are the dca runs up-to-date and ok? If so, then this looks ready to merge. |
Yes, the DCA runs are up to date. (The C++ report is messed up due to a failure in JavaScriptCore, but that's also failing on nightly) |
Shows the effect of github#17262
This will need to be backed out. The C++ DCA failure on Wireshark is a serious regression where we now get a timeout. |
After using an implicit read, flow can now only terminate in a sink or continue along edges contributed by
Config:isAdditionalFlowStep
, but not via other kinds of steps, like simple local flow steps.This is achieved by treating the implicit read node as a sink if its original node was a sink, and copying any relevant outgoing steps from the original node onto the implicit read node.