File tree Expand file tree Collapse file tree 2 files changed +25
-1
lines changed
javascript/ql/src/semmle/javascript/dataflow Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -335,5 +335,20 @@ abstract class AdditionalTypeTrackingStep extends DataFlow::Node {
335
335
/**
336
336
* Holds if type-tracking should step from `pred` to `succ`.
337
337
*/
338
- abstract predicate step ( DataFlow:: Node pred , DataFlow:: Node succ ) ;
338
+ predicate step ( DataFlow:: Node pred , DataFlow:: Node succ ) { none ( ) }
339
+
340
+ /**
341
+ * Holds if type-tracking should step from `pred` into the `prop` property of `succ`.
342
+ */
343
+ predicate storeStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) { none ( ) }
344
+
345
+ /**
346
+ * Holds if type-tracking should step from the `prop` property of `pred` to `succ`.
347
+ */
348
+ predicate loadStep ( DataFlow:: Node pred , DataFlow:: Node succ , string prop ) { none ( ) }
349
+
350
+ /**
351
+ * Holds if type-tracking should step from the `prop` property of `pred` to the same property in `succ`.
352
+ */
353
+ predicate loadStoreStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) { none ( ) }
339
354
}
Original file line number Diff line number Diff line change @@ -110,6 +110,15 @@ module StepSummary {
110
110
or
111
111
basicLoadStep ( pred , succ , prop ) and
112
112
summary = LoadStep ( prop )
113
+ or
114
+ any ( AdditionalTypeTrackingStep st ) .storeStep ( pred , succ , prop ) and
115
+ summary = StoreStep ( prop )
116
+ or
117
+ any ( AdditionalTypeTrackingStep st ) .loadStep ( pred , succ , prop ) and
118
+ summary = LoadStep ( prop )
119
+ or
120
+ any ( AdditionalTypeTrackingStep st ) .loadStoreStep ( pred , succ , prop ) and
121
+ summary = CopyStep ( prop )
113
122
)
114
123
or
115
124
any ( AdditionalTypeTrackingStep st ) .step ( pred , succ ) and
You can’t perform that action at this time.
0 commit comments