@@ -187,12 +187,9 @@ DataFlow::SourceNode nodeReachingSink(API::Node sink) {
187
187
private API:: Node getASinkNode ( DataFlow:: SourceNode node ) { node = nodeReachingSink ( result ) }
188
188
189
189
/**
190
- * Holds if `node` is a declaration in an externs file.
191
- *
192
- * This is to ensure that functions/classes in externs are not named after a re-export in a package.
190
+ * Holds if `node` is assigned to a global access path. Note that such nodes generally do not have API nodes.
193
191
*/
194
- private predicate nameFromExterns ( DataFlow:: Node node , string package , string name , int badness ) {
195
- node .getTopLevel ( ) .isExterns ( ) and
192
+ private predicate nameFromGlobal ( DataFlow:: Node node , string package , string name , int badness ) {
196
193
package = "global" and
197
194
node = AccessPath:: getAnAssignmentTo ( name ) and
198
195
badness = - 10
@@ -224,7 +221,7 @@ private predicate classObjectHasNameCandidate(
224
221
badness = baseBadness + getBadnessOfClassName ( name )
225
222
)
226
223
or
227
- nameFromExterns ( cls , package , name , badness )
224
+ nameFromGlobal ( cls , package , name , badness )
228
225
or
229
226
// If the class is not accessible via an access path, but instances of the
230
227
// class can still escape via more complex access patterns, resort to a synthesized name.
@@ -252,7 +249,7 @@ private predicate sourceNodeHasNameCandidate(
252
249
) {
253
250
sinkHasPrimaryName ( getASinkNode ( node ) , package , name , badness )
254
251
or
255
- nameFromExterns ( node , package , name , badness )
252
+ nameFromGlobal ( node , package , name , badness )
256
253
or
257
254
classObjectHasNameCandidate ( node , package , name , badness )
258
255
}
@@ -290,7 +287,11 @@ private DataFlow::SourceNode functionValue() {
290
287
* Holds if `node` is a function or a call that returns a function.
291
288
*/
292
289
private predicate isFunctionSource ( DataFlow:: SourceNode node ) {
293
- exists ( getASinkNode ( node ) ) and
290
+ (
291
+ exists ( getASinkNode ( node ) )
292
+ or
293
+ nameFromGlobal ( node , _, _, _)
294
+ ) and
294
295
(
295
296
node instanceof DataFlow:: FunctionNode
296
297
or
0 commit comments