1010
1111import powershell
1212
13- predicate containsScope ( VariableExpression outer , VariableExpression inner ) {
13+ predicate containsScope ( VarAccess outer , VarAccess inner ) {
1414 outer .getUserPath ( ) = inner .getUserPath ( ) and
1515 outer != inner
1616}
1717
18- predicate constantTernaryExpression ( TernaryExpression ternary ) {
18+ predicate constantTernaryExpression ( ConditionalExpr ternary ) {
1919 onlyConstantExpressions ( ternary .getIfTrue ( ) ) and onlyConstantExpressions ( ternary .getIfFalse ( ) )
2020}
2121
22- predicate constantBinaryExpression ( BinaryExpression binary ) {
23- onlyConstantExpressions ( binary .getLeftHandSide ( ) ) and onlyConstantExpressions ( binary .getRightHandSide ( ) )
22+ predicate constantBinaryExpression ( BinaryExpr binary ) {
23+ onlyConstantExpressions ( binary .getLeft ( ) ) and onlyConstantExpressions ( binary .getRight ( ) )
2424}
2525
26- predicate onlyConstantExpressions ( Expression expr ) {
27- expr instanceof StringConstantExpression or constantBinaryExpression ( expr ) or constantTernaryExpression ( expr )
26+ predicate onlyConstantExpressions ( Expr expr ) {
27+ expr instanceof StringConstExpression or constantBinaryExpression ( expr ) or constantTernaryExpression ( expr )
2828}
2929
30- VariableExpression getNonConstantVariableAssignment ( VariableExpression varexpr ) {
30+ VarAccess getNonConstantVariableAssignment ( VarAccess varexpr ) {
3131 (
32- exists ( AssignmentStatement assignment |
33- not onlyConstantExpressions ( assignment .getRightHandSide ( ) .( CommandExpression ) . getExpression ( ) ) and
32+ exists ( AssignStmt assignment |
33+ not onlyConstantExpressions ( assignment .getRightHandSide ( ) .( CmdExpr ) . getExpr ( ) ) and
3434 result = assignment .getLeftHandSide ( )
3535 )
3636 ) and
3737 containsScope ( result , varexpr )
3838}
3939
40- VariableExpression getParameterWithVariableScope ( VariableExpression varexpr ) {
40+ VarAccess getParameterWithVariableScope ( VarAccess varexpr ) {
4141 exists ( Parameter parameter |
4242 result = parameter .getName ( ) and
4343 containsScope ( result , varexpr )
4444 )
4545}
4646
47- Expression getAllSubExpressions ( Expression expr )
47+ Expr getAllSubExpressions ( Expr expr )
4848{
4949 result = expr or
5050 result = getAllSubExpressions ( expr .( ArrayLiteral ) .getAnElement ( ) ) or
51- result = getAllSubExpressions ( expr .( ArrayExpression ) .getStatementBlock ( ) .getAStatement ( ) .( Pipeline ) .getAComponent ( ) .( CommandExpression ) . getExpression ( ) )
51+ result = getAllSubExpressions ( expr .( ArrayExpr ) .getStatementBlock ( ) .getAStatement ( ) .( Pipeline ) .getAComponent ( ) .( CmdExpr ) . getExpr ( ) )
5252}
5353
54- Expression dangerousCommandElement ( Command command )
54+ Expr dangerousCommandElement ( Cmd command )
5555{
5656 (
5757 command .getKind ( ) = 28 or
@@ -60,15 +60,15 @@ Expression dangerousCommandElement(Command command)
6060 result = getAllSubExpressions ( command .getAnElement ( ) )
6161}
6262
63- from Expression commandarg , VariableExpression unknownDeclaration
63+ from Expr commandarg , VarAccess unknownDeclaration
6464where
65- exists ( Command command |
65+ exists ( Cmd command |
6666 (
6767 unknownDeclaration = getNonConstantVariableAssignment ( commandarg ) or
6868 unknownDeclaration = getParameterWithVariableScope ( commandarg )
6969 )
7070 and
7171 commandarg = dangerousCommandElement ( command )
7272 )
73- select commandarg .( VariableExpression ) .getLocation ( ) , "Unsafe flow to command argument from $@." ,
73+ select commandarg .( VarAccess ) .getLocation ( ) , "Unsafe flow to command argument from $@." ,
7474 unknownDeclaration , unknownDeclaration .getUserPath ( )
0 commit comments