Example #1
0
 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;
 }
Example #3
0
 public function mergeTaintEnvironment(TaintEnvironment $env)
 {
     $envTaints = $env->getTaintResults();
     foreach ($envTaints as $varName => $taintRes) {
         $this->mergeAndSetTaintResult($varName, $taintRes);
     }
 }
Example #4
0
 protected function resolveTaintForArrayOfStatements($nodes, TaintEnvironment $taintEnv)
 {
     $envResult = $taintEnv->copy();
     foreach ($nodes as $node) {
         $nodeTaintEnv = $this->analyse($node, $taintEnv);
         $envResult->mergeTaintEnvironment($nodeTaintEnv);
     }
     return $envResult;
 }