PHPAnalysis.Analysis.CFG.Taint.TaintBlockAnalyzer.Expr_Ternary C# (CSharp) Метод

Expr_Ternary() приватный Метод

private Expr_Ternary ( XmlNode node ) : ExpressionInfo
node System.Xml.XmlNode
Результат ExpressionInfo
        private ExpressionInfo Expr_Ternary(XmlNode node)
        {
            var condNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Cond);
            var ifTrueNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.If);
            var ifFalseNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Else);

            Analyze(condNode);
            var condAnalyzer = new ConditionTaintAnalyser(_analysisScope, this._inclusionResolver, _analysisStacks.IncludeStack);

            var condResult = condAnalyzer.AnalyzeCond(condNode, ImmutableVariableStorage.CreateFromMutable(_variableStorage));

            var currentResolver = this._varResolver;
            this._varResolver = new VariableResolver(condResult[EdgeType.True].ToMutable());
            var leftTaint = Analyze(ifTrueNode);
            this._varResolver = new VariableResolver(condResult[EdgeType.False].ToMutable());
            var rightTaint = Analyze(ifFalseNode);

            this._varResolver = currentResolver;

            return leftTaint.Merge(rightTaint);
        }