From e46513557a5160331c373d1568102ebd5d7ee8db Mon Sep 17 00:00:00 2001 From: parnas Date: Tue, 1 Apr 2014 11:52:52 +0200 Subject: [PATCH 1/2] Strict in_array check in Parser.php Otherwise it doesn't throw an error for the cases when passed parameters array includes zero key. --- src/Symfony/Component/ExpressionLanguage/Parser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/ExpressionLanguage/Parser.php b/src/Symfony/Component/ExpressionLanguage/Parser.php index f0d2321241..db4b5858b1 100644 --- a/src/Symfony/Component/ExpressionLanguage/Parser.php +++ b/src/Symfony/Component/ExpressionLanguage/Parser.php @@ -190,7 +190,7 @@ class Parser $node = new Node\FunctionNode($token->value, $this->parseArguments()); } else { - if (!in_array($token->value, $this->names)) { + if (!in_array($token->value, $this->names, true)) { throw new SyntaxError(sprintf('Variable "%s" is not valid', $token->value), $token->cursor); } From 154c4a598aac084c2923d03129c10559d57b5f43 Mon Sep 17 00:00:00 2001 From: Dmitry Parnas Date: Sun, 6 Apr 2014 23:04:13 +0200 Subject: [PATCH 2/2] [ExpressionLanguage] Test for the non-strict in_array check in parsePrimaryExpression in Parser.php --- .../Component/ExpressionLanguage/Tests/ParserTest.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php b/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php index 3be677ca76..4cbab6591f 100644 --- a/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php +++ b/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php @@ -28,6 +28,17 @@ class ParserTest extends \PHPUnit_Framework_TestCase $parser->parse($lexer->tokenize('foo')); } + /** + * @expectedException \Symfony\Component\ExpressionLanguage\SyntaxError + * @expectedExceptionMessage Variable "foo" is not valid around position 1. + */ + public function testParseWithZeroInNames() + { + $lexer = new Lexer(); + $parser = new Parser(array()); + $parser->parse($lexer->tokenize('foo'), array(0)); + } + /** * @dataProvider getParseData */