@@ -15,32 +15,34 @@ abstract class FlagKind extends string {
15
15
FlagKind ( ) { any ( ) }
16
16
17
17
/**
18
- * Returns a flag name of this type.
18
+ * Gets a flag name of this type.
19
19
*/
20
20
bindingset [ result ]
21
21
abstract string getAFlagName ( ) ;
22
22
23
23
/** Gets a node representing a (likely) security flag. */
24
24
DataFlow:: Node getAFlag ( ) {
25
- exists ( VarAccess v | v .getVariable ( ) .getName ( ) = getAFlagName ( ) |
26
- result .asExpr ( ) = v and v .getType ( ) instanceof FlagType
25
+ exists ( DataFlow:: Node flag |
26
+ exists ( VarAccess v | v .getVariable ( ) .getName ( ) = getAFlagName ( ) |
27
+ flag .asExpr ( ) = v and v .getType ( ) instanceof FlagType
28
+ )
29
+ or
30
+ exists ( StringLiteral s | s .getRepresentedString ( ) = getAFlagName ( ) | flag .asExpr ( ) = s )
31
+ or
32
+ exists ( MethodAccess ma | ma .getMethod ( ) .getName ( ) = getAFlagName ( ) |
33
+ flag .asExpr ( ) = ma and
34
+ ma .getType ( ) instanceof FlagType
35
+ )
36
+ |
37
+ flagFlowStep * ( flag , result )
27
38
)
28
- or
29
- exists ( StringLiteral s | s .getRepresentedString ( ) = getAFlagName ( ) | result .asExpr ( ) = s )
30
- or
31
- exists ( MethodAccess ma | ma .getMethod ( ) .getName ( ) = getAFlagName ( ) |
32
- result .asExpr ( ) = ma and
33
- ma .getType ( ) instanceof FlagType
34
- )
35
- or
36
- flagFlowStep * ( getAFlag ( ) , result )
37
39
}
38
40
}
39
41
40
42
/**
41
43
* Flags suggesting an optional feature, perhaps deliberately insecure.
42
44
*/
43
- class SecurityFeatureFlag extends FlagKind {
45
+ private class SecurityFeatureFlag extends FlagKind {
44
46
SecurityFeatureFlag ( ) { this = "SecurityFeatureFlag" }
45
47
46
48
bindingset [ result ]
0 commit comments