File tree Expand file tree Collapse file tree 3 files changed +19
-0
lines changed
javascript/ql/lib/semmle/javascript Expand file tree Collapse file tree 3 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -313,6 +313,19 @@ class AmdModule extends Module {
313
313
name = pwn .getPropertyName ( )
314
314
)
315
315
}
316
+
317
+ override DataFlow:: Node getABulkExportedNode ( ) {
318
+ // Assigned to `module.exports` via the factory's `module` parameter
319
+ exists ( AbstractModuleObject m , DataFlow:: PropWrite write |
320
+ m .getModule ( ) = this and
321
+ write .getPropertyName ( ) = "exports" and
322
+ write .getBase ( ) .analyze ( ) .getAValue ( ) = m and
323
+ result = write .getRhs ( )
324
+ )
325
+ or
326
+ // Returned from factory function
327
+ result = getDefine ( ) .getModuleExpr ( ) .flow ( )
328
+ }
316
329
}
317
330
318
331
/**
Original file line number Diff line number Diff line change @@ -177,6 +177,10 @@ module Closure {
177
177
)
178
178
)
179
179
}
180
+
181
+ override DataFlow:: Node getABulkExportedNode ( ) {
182
+ result = getExportsVariable ( ) .getAnAssignedExpr ( ) .flow ( )
183
+ }
180
184
}
181
185
182
186
/**
Original file line number Diff line number Diff line change @@ -171,4 +171,6 @@ private DataFlow::Node getAnExportFromModule(Module mod) {
171
171
result .analyze ( ) .getAValue ( ) = mod .( AmdModule ) .getDefine ( ) .getAModuleExportsValue ( )
172
172
or
173
173
result = mod .getAnExportedValue ( _)
174
+ or
175
+ result = mod .getABulkExportedNode ( )
174
176
}
You can’t perform that action at this time.
0 commit comments