[HttpKernel][FrameworkBundle] Fix escaping of serialized payloads passed to test clients

This commit is contained in:
Nicolas Grekas 2018-09-03 16:40:22 +02:00
parent 74b6689838
commit 255455430a
2 changed files with 18 additions and 18 deletions

View File

@ -161,19 +161,19 @@ class Client extends BaseClient
*/
protected function getScript($request)
{
$kernel = str_replace("'", "\\'", serialize($this->kernel));
$request = str_replace("'", "\\'", serialize($request));
$kernel = var_export(serialize($this->kernel), true);
$request = var_export(serialize($request), true);
$r = new \ReflectionObject($this->kernel);
$autoloader = \dirname($r->getFileName()).'/autoload.php';
if (is_file($autoloader)) {
$autoloader = str_replace("'", "\\'", $autoloader);
$autoloader = var_export($autoloader, true);
} else {
$autoloader = '';
$autoloader = 'false';
}
$path = str_replace("'", "\\'", $r->getFileName());
$path = var_export($r->getFileName(), true);
$profilerCode = '';
if ($this->profiler) {
@ -187,16 +187,16 @@ class Client extends BaseClient
error_reporting($errorReporting);
if ('$autoloader') {
require_once '$autoloader';
if ($autoloader) {
require_once $autoloader;
}
require_once '$path';
require_once $path;
\$kernel = unserialize('$kernel');
\$kernel = unserialize($kernel);
\$kernel->boot();
$profilerCode
\$request = unserialize('$request');
\$request = unserialize($request);
EOF;
return $code.$this->getHandleScript();

View File

@ -71,12 +71,12 @@ class Client extends BaseClient
*/
protected function getScript($request)
{
$kernel = str_replace("'", "\\'", serialize($this->kernel));
$request = str_replace("'", "\\'", serialize($request));
$kernel = var_export(serialize($this->kernel), true);
$request = var_export(serialize($request), true);
$r = new \ReflectionClass('\\Symfony\\Component\\ClassLoader\\ClassLoader');
$requirePath = str_replace("'", "\\'", $r->getFileName());
$symfonyPath = str_replace("'", "\\'", \dirname(\dirname(\dirname(__DIR__))));
$requirePath = var_export($r->getFileName(), true);
$symfonyPath = var_export(\dirname(\dirname(\dirname(__DIR__))), true);
$errorReporting = error_reporting();
$code = <<<EOF
@ -84,14 +84,14 @@ class Client extends BaseClient
error_reporting($errorReporting);
require_once '$requirePath';
require_once $requirePath;
\$loader = new Symfony\Component\ClassLoader\ClassLoader();
\$loader->addPrefix('Symfony', '$symfonyPath');
\$loader->addPrefix('Symfony', $symfonyPath);
\$loader->register();
\$kernel = unserialize('$kernel');
\$request = unserialize('$request');
\$kernel = unserialize($kernel);
\$request = unserialize($request);
EOF;
return $code.$this->getHandleScript();