PHPAnalysis.Analysis.CFG.Taint.ConditionTaintAnalyser.Node_FuncCall C# (CSharp) Метод

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

private Node_FuncCall ( XmlNode node ) : TaintSets
node System.Xml.XmlNode
Результат TaintSets
        private TaintSets Node_FuncCall(XmlNode node)
        {
            if (!isConditional)
            {
                return null;
            }

            // We use the True scope as both True and False are the same at this point in time
            var functionCallExtractor = new FunctionCallExtractor();
            var functionCall = functionCallExtractor.ExtractFunctionCall(node);

            FunctionsHandler fh = FunctionsHandler.Instance;

            var condSaniFunc = fh.FindCondSanitizerByName(functionCall.Name);
            if (condSaniFunc != null)
            {
                var parameter = functionCall.Arguments;
                var varResolverFalse = new VariableResolver(_variables[EdgeType.False]);
                if (parameter.Any(x => varResolverFalse.IsResolvableNode(x.Value))
                                    && condSaniFunc.DefaultStatus == MixedStatus.XSSSQL_SAFE)
                {
                    if (isNegated)
                    {
                        var var = varResolverFalse.ResolveVariable(parameter.First(x => varResolverFalse.IsResolvableNode(x.Value)).Value);
                        var.Variable.Info.Taints = new TaintSets().ClearTaint();
                    }
                    else
                    {
                        var varResolverTrue = new VariableResolver(_variables[EdgeType.True]);
                        var var = varResolverTrue.ResolveVariable(parameter.First(x => varResolverTrue.IsResolvableNode(x.Value)).Value);
                        var.Variable.Info.Taints = new TaintSets().ClearTaint();
                    }
                }
            }
            return new TaintSets().ClearTaint();
        }