public function getVariableTaint(Variable $var) { $assignEnv = $var->environment->resolveVariable($var->name)->environment; $taintEnv = TaintEnvironment::getTaintEnvironmentFromEnvironment($assignEnv); $taintResult = $taintEnv->getTaintResult($var->name); return $taintResult->getTaint(); }
protected function resolveReturnStatementTaintEnvironment(Return_ $exp, TaintEnvironment $taintEnv) { $retExp = $exp->expr; TaintEnvironment::updateTaintEnvironmentForEnvironment($retExp->environment, $taintEnv); $retExpTaint = $this->resolveExprTaint($retExp); $retEnv = $taintEnv->copy(); $retEnv->setTaintResult($exp->getLine(), $retExpTaint); $this->addReturnTaintResult($exp, $retExpTaint); return $retEnv; }
public function mergeTaintEnvironment(TaintEnvironment $env) { $envTaints = $env->getTaintResults(); foreach ($envTaints as $varName => $taintRes) { $this->mergeAndSetTaintResult($varName, $taintRes); } }
protected function resolveTaintForArrayOfStatements($nodes, TaintEnvironment $taintEnv) { $envResult = $taintEnv->copy(); foreach ($nodes as $node) { $nodeTaintEnv = $this->analyse($node, $taintEnv); $envResult->mergeTaintEnvironment($nodeTaintEnv); } return $envResult; }