|
31 | 31 | use PHPParser_Node_Stmt_Interface;
|
32 | 32 | use PHPParser_Node_Stmt_Namespace;
|
33 | 33 | use PHPParser_Node_Stmt_Use;
|
| 34 | +use PHPParser_Node_Expr_MethodCall; |
34 | 35 | use PHPParser_Parser;
|
35 | 36 |
|
36 | 37 |
|
@@ -285,6 +286,7 @@ private function parseNode(array $nodes)
|
285 | 286 | $this->validateFunctionNames($node);
|
286 | 287 | $this->validateExit($node);
|
287 | 288 | $this->validatePrint($node);
|
| 289 | + $this->validateMethodCalls($node); |
288 | 290 | }
|
289 | 291 |
|
290 | 292 | if (is_array($node) || is_object($node))
|
@@ -366,13 +368,56 @@ private function validateFunctionNames(PHPParser_Node $node)
|
366 | 368 | $name = (string)$node->expr->name->subNodes[0];
|
367 | 369 | }
|
368 | 370 |
|
369 |
| - if ($name != null) |
| 371 | + if ($name !== null) |
370 | 372 | {
|
371 | 373 | $this->validateDbal($name, $node);
|
372 | 374 | $this->validateDeprecated($name, $node);
|
373 | 375 | $this->validateFunctions($name, $node);
|
374 | 376 | }
|
375 | 377 | }
|
| 378 | + |
| 379 | + /** |
| 380 | + * Validate method calls to classes. |
| 381 | + * @param \PHPParser_Node $node Node to validate |
| 382 | + */ |
| 383 | + private function validateMethodCalls(PHPParser_Node $node) { |
| 384 | + $name = null; |
| 385 | + if ($node instanceof PHPParser_Node_Expr_MethodCall) |
| 386 | + { |
| 387 | + if ($node->name instanceof PHPParser_Node_Expr_Variable) |
| 388 | + { |
| 389 | + // If function name is a variable. |
| 390 | + $name = (string)$node->name->name; |
| 391 | + } |
| 392 | + else |
| 393 | + { |
| 394 | + $name = (string)$node->name; |
| 395 | + } |
| 396 | + } |
| 397 | + else if (isset($node->expr) && $node->expr instanceof PHPParser_Node_Expr_MethodCall) |
| 398 | + { |
| 399 | + $name = (string)$node->expr->name; |
| 400 | + } |
| 401 | + |
| 402 | + if ($name !== null) |
| 403 | + { |
| 404 | + $this->validateEnableGlobals($name, $node); |
| 405 | + } |
| 406 | + } |
| 407 | + |
| 408 | + /** |
| 409 | + * Valdiate the use of enable_globals. |
| 410 | + * |
| 411 | + * @param $name |
| 412 | + * @param \PHPParser_Node $node |
| 413 | + */ |
| 414 | + private function validateEnableGlobals($name, PHPParser_Node $node) |
| 415 | + { |
| 416 | + if ($name == 'enable_super_globals') |
| 417 | + { |
| 418 | + $this->addMessage(Output::FATAL, sprintf('The use of enable_super_globals() is not allowed for security reasons on line %s', $node->getAttribute('startLine'))); |
| 419 | + } |
| 420 | + } |
376 | 421 |
|
377 | 422 | /**
|
378 | 423 | * Valdiate the use of deprecated functions.
|
|
0 commit comments