From 10e903aa5d8b8789dd94ab8489d5e387448457ec Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Wed, 12 Mar 2014 15:41:28 +0100 Subject: [PATCH] [Process] Fix #9160 : escaping an argument with a trailing backslash on windows fails --- src/Symfony/Component/Process/ProcessUtils.php | 3 +++ src/Symfony/Component/Process/Tests/ProcessUtilsTest.php | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/Symfony/Component/Process/ProcessUtils.php b/src/Symfony/Component/Process/ProcessUtils.php index cde393e8bdc8..d5f5d9cb086e 100644 --- a/src/Symfony/Component/Process/ProcessUtils.php +++ b/src/Symfony/Component/Process/ProcessUtils.php @@ -52,6 +52,9 @@ public static function escapeArgument($argument) } elseif ('%' === $part) { $escapedArgument .= '^%'; } else { + if ('\\' === substr($part, -1)) { + $part .= '\\'; + } $escapedArgument .= escapeshellarg($part); } } diff --git a/src/Symfony/Component/Process/Tests/ProcessUtilsTest.php b/src/Symfony/Component/Process/Tests/ProcessUtilsTest.php index 603fac53e787..b9e8b0c76a34 100644 --- a/src/Symfony/Component/Process/Tests/ProcessUtilsTest.php +++ b/src/Symfony/Component/Process/Tests/ProcessUtilsTest.php @@ -31,6 +31,7 @@ public function dataArguments() array('^%"path"^%', '%path%'), array('"<|>"\\"" "\\""\'f"', '<|>" "\'f'), array('""', ''), + array('"with\trailingbs\\\\"', 'with\trailingbs\\'), ); } @@ -39,6 +40,7 @@ public function dataArguments() array("'%path%'", '%path%'), array("'<|>\" \"'\\''f'", '<|>" "\'f'), array("''", ''), + array("'with\\trailingbs\\'", 'with\trailingbs\\'), ); } }