@@ -15,32 +15,34 @@ abstract class FlagKind extends string {
1515 FlagKind ( ) { any ( ) }
1616
1717 /**
18- * Returns a flag name of this type.
18+ * Gets a flag name of this type.
1919 */
2020 bindingset [ result ]
2121 abstract string getAFlagName ( ) ;
2222
2323 /** Gets a node representing a (likely) security flag. */
2424 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 )
2738 )
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 )
3739 }
3840}
3941
4042/**
4143 * Flags suggesting an optional feature, perhaps deliberately insecure.
4244 */
43- class SecurityFeatureFlag extends FlagKind {
45+ private class SecurityFeatureFlag extends FlagKind {
4446 SecurityFeatureFlag ( ) { this = "SecurityFeatureFlag" }
4547
4648 bindingset [ result ]
0 commit comments