-
Notifications
You must be signed in to change notification settings - Fork 1.8k
JS: Add SharedTaintStep (again) #5396
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
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.
Nice!
And bravo for keeping this to so many atomic and simple commits!
My concern is that we are not making our users properly aware of this change. It is not obvious to outsiders why we are doing this major surgery, which could look like a simple renaming exercise that is optional to respect.
I suppose a change note and an update to the tutorials would suffice. A more glaring deprecation warning would be great, but I can see how that may be tricky.
* of the standard library. Override `Configuration::isAdditionalTaintStep` | ||
* for analysis-specific taint steps. | ||
*/ | ||
abstract class AdditionalTaintStep extends DataFlow::Node { |
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.
Could we mark this as deprecated, or at least add some prominent text about SharedTaintSted
? Otherwise, the users will keep using it.
(I suppose the reason that this isn't deprecated is that we use it ourselves in legacyAdditionalTaintStep
, it would be nice if we could juggle our way out of that)
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.
Oh I thought it actually was deprecated. It's properly deprecated now.
I've also updated the tutorial. In the process of doing that, I introduced a forward-compatible version of DataFlow::SharedFlowStep
as one paragraph simply couldn't be updated without distracting the reader with the details of how these two classes differ. Actually migrating to SharedFlowStep
is for a future PR.
/** | ||
* Holds if `pred -> succ` is an edge used by all taint-tracking configurations. | ||
*/ | ||
predicate sharedTaintStep(DataFlow::Node pred, DataFlow::Node succ) { |
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.
Could we add a comment at the relevant locations about the need to manually maintain this large disjunction?
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.
Do we wait for a change note labelling decision, or do we add that afterwards?
8ed0579
to
ccc879d
Compare
Rebased to resolve conflicts |
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.
But shouldn't we add a change note?
(Or are you waiting until DataFlow::SharedFlowStep
is fully implemented?)
@esbena any final comments from your end? |
For anyone else seeing this, we addressed this question offline and decided not to add a change note for now. |
Revival of #3603 without the string base-type stuff.
Converts
AdditionalTaintStep
to a unit-type class calledSharedTaintStep
:AdditionalTaintStep
remains as a deprecated class.AdditionalTaintStep
into a unit type would be a breaking change, hence the new class.Evaluation looks good