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 {
313313 name = pwn .getPropertyName ( )
314314 )
315315 }
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+ }
316329}
317330
318331/**
Original file line number Diff line number Diff line change @@ -177,6 +177,10 @@ module Closure {
177177 )
178178 )
179179 }
180+
181+ override DataFlow:: Node getABulkExportedNode ( ) {
182+ result = getExportsVariable ( ) .getAnAssignedExpr ( ) .flow ( )
183+ }
180184 }
181185
182186 /**
Original file line number Diff line number Diff line change @@ -171,4 +171,6 @@ private DataFlow::Node getAnExportFromModule(Module mod) {
171171 result .analyze ( ) .getAValue ( ) = mod .( AmdModule ) .getDefine ( ) .getAModuleExportsValue ( )
172172 or
173173 result = mod .getAnExportedValue ( _)
174+ or
175+ result = mod .getABulkExportedNode ( )
174176}
You can’t perform that action at this time.
0 commit comments