Exemplo n.º 1
0
        /// <summary>
        /// Method to analyze a PHP method call with the class name included
        /// </summary>
        /// <param name="methodCall">The method call to analyze</param>
        /// <param name="argInfos">The argument infos to include in the analysis</param>
        /// <returns>The common TaintSets found</returns>
        public ExpressionInfo AnalyzeMethodCall(MethodCall methodCall, IList <ExpressionInfo> argInfos)
        {
            //In most cases there should be either 0 or 1 classes, but situations where functions are specified several places can happen.
            //Therefore, we support it and select the worst case.
            var exprInfo = new ExpressionInfo();

            //Try to find all the possible method calls, and create the worst case scenario of taints.
            foreach (string className in methodCall.ClassNames)
            {
                IList <Function> funclist = _funcHandler.LookupFunction(methodCall.CreateFullMethodName(className));
                exprInfo = exprInfo.Merge(CreateCommonTaintSets(funclist, argInfos));
            }

            return(exprInfo);
        }