Skip to content

Commit 988fa9c

Browse files
committed
JS: Deprecate AdditionalSanitizerGuardNode
We're deprecating the class through an alias, but it is still the base class for a non-deprecated class, for backwards compatibility. For this reason we're also deprecating all of its member predicates so we can remove those in the future.
1 parent 0b1e859 commit 988fa9c

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

javascript/ql/lib/semmle/javascript/dataflow/TaintTracking.qll

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -204,44 +204,41 @@ module TaintTracking {
204204
* It exposes the member predicates of `AdditionalSanitizerGuardNode` for backwards compatibility.
205205
*/
206206
abstract private class LegacyAdditionalBarrierGuard extends AdditionalBarrierGuard,
207-
AdditionalSanitizerGuardNode
207+
AdditionalSanitizerGuardNodeDeprecated
208208
{
209-
override predicate sanitizes(boolean outcome, Expr e) { this.blocksExpr(outcome, e) }
209+
deprecated override predicate sanitizes(boolean outcome, Expr e) { this.blocksExpr(outcome, e) }
210210

211211
deprecated override predicate appliesTo(Configuration cfg) { any() }
212212
}
213213

214214
/**
215-
* A `SanitizerGuardNode` that controls which taint tracking
216-
* configurations it is used in.
217-
*
218-
* Note: For performance reasons, all subclasses of this class should be part
219-
* of the standard library. Override `Configuration::isSanitizerGuard`
220-
* for analysis-specific taint sanitizer guards.
215+
* DEPRECATED. This class was part of the old data flow library which is now deprecated.
216+
* Use `TaintTracking::AdditionalBarrierGuard` instead.
221217
*/
218+
deprecated class AdditionalSanitizerGuardNode = AdditionalSanitizerGuardNodeDeprecated;
219+
222220
cached
223-
abstract class AdditionalSanitizerGuardNode extends DataFlow::Node {
224-
// TODO: deprecate this class; currently requires too much refactoring
221+
abstract private class AdditionalSanitizerGuardNodeDeprecated extends DataFlow::Node {
225222
// For backwards compatibility, this contains a copy of the SanitizerGuard interface,
226223
// but is does not inherit from it as that would cause re-evaluation of cached barriers.
227224
/**
228225
* Holds if this node blocks expression `e`, provided it evaluates to `outcome`.
229226
*/
230227
cached
231-
predicate blocks(boolean outcome, Expr e) { none() }
228+
deprecated predicate blocks(boolean outcome, Expr e) { none() }
232229

233230
/**
234231
* Holds if this node sanitizes expression `e`, provided it evaluates
235232
* to `outcome`.
236233
*/
237234
cached
238-
abstract predicate sanitizes(boolean outcome, Expr e);
235+
abstract deprecated predicate sanitizes(boolean outcome, Expr e);
239236

240237
/**
241238
* Holds if this node blocks expression `e` from flow of type `label`, provided it evaluates to `outcome`.
242239
*/
243240
cached
244-
predicate blocks(boolean outcome, Expr e, DataFlow::FlowLabel label) {
241+
deprecated predicate blocks(boolean outcome, Expr e, DataFlow::FlowLabel label) {
245242
this.sanitizes(outcome, e) and label.isTaint()
246243
or
247244
this.sanitizes(outcome, e, label)
@@ -252,7 +249,7 @@ module TaintTracking {
252249
* to `outcome`.
253250
*/
254251
cached
255-
predicate sanitizes(boolean outcome, Expr e, DataFlow::FlowLabel label) { none() }
252+
deprecated predicate sanitizes(boolean outcome, Expr e, DataFlow::FlowLabel label) { none() }
256253

257254
/**
258255
* Holds if this guard applies to the flow in `cfg`.

0 commit comments

Comments
 (0)