/// <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); }