Skip to content

Commit cf359c2

Browse files
committed
bug symfony#28344 [HttpKernel][FrameworkBundle] Fix escaping of serialized payloads passed to test clients (nicolas-grekas)
This PR was merged into the 2.8 branch. Discussion ---------- [HttpKernel][FrameworkBundle] Fix escaping of serialized payloads passed to test clients | Q | A | ------------- | --- | Branch? | 2.8 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | symfony#28125 | License | MIT | Doc PR | - Commits ------- 2554554 [HttpKernel][FrameworkBundle] Fix escaping of serialized payloads passed to test clients
2 parents b102e72 + 2554554 commit cf359c2

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

src/Symfony/Bundle/FrameworkBundle/Client.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,19 +161,19 @@ protected function doRequestInProcess($request)
161161
*/
162162
protected function getScript($request)
163163
{
164-
$kernel = str_replace("'", "\\'", serialize($this->kernel));
165-
$request = str_replace("'", "\\'", serialize($request));
164+
$kernel = var_export(serialize($this->kernel), true);
165+
$request = var_export(serialize($request), true);
166166

167167
$r = new \ReflectionObject($this->kernel);
168168

169169
$autoloader = \dirname($r->getFileName()).'/autoload.php';
170170
if (is_file($autoloader)) {
171-
$autoloader = str_replace("'", "\\'", $autoloader);
171+
$autoloader = var_export($autoloader, true);
172172
} else {
173-
$autoloader = '';
173+
$autoloader = 'false';
174174
}
175175

176-
$path = str_replace("'", "\\'", $r->getFileName());
176+
$path = var_export($r->getFileName(), true);
177177

178178
$profilerCode = '';
179179
if ($this->profiler) {
@@ -187,16 +187,16 @@ protected function getScript($request)
187187
188188
error_reporting($errorReporting);
189189
190-
if ('$autoloader') {
191-
require_once '$autoloader';
190+
if ($autoloader) {
191+
require_once $autoloader;
192192
}
193-
require_once '$path';
193+
require_once $path;
194194
195-
\$kernel = unserialize('$kernel');
195+
\$kernel = unserialize($kernel);
196196
\$kernel->boot();
197197
$profilerCode
198198
199-
\$request = unserialize('$request');
199+
\$request = unserialize($request);
200200
EOF;
201201

202202
return $code.$this->getHandleScript();

src/Symfony/Component/HttpKernel/Client.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,27 +71,27 @@ protected function doRequest($request)
7171
*/
7272
protected function getScript($request)
7373
{
74-
$kernel = str_replace("'", "\\'", serialize($this->kernel));
75-
$request = str_replace("'", "\\'", serialize($request));
74+
$kernel = var_export(serialize($this->kernel), true);
75+
$request = var_export(serialize($request), true);
7676

7777
$r = new \ReflectionClass('\\Symfony\\Component\\ClassLoader\\ClassLoader');
78-
$requirePath = str_replace("'", "\\'", $r->getFileName());
79-
$symfonyPath = str_replace("'", "\\'", \dirname(\dirname(\dirname(__DIR__))));
78+
$requirePath = var_export($r->getFileName(), true);
79+
$symfonyPath = var_export(\dirname(\dirname(\dirname(__DIR__))), true);
8080
$errorReporting = error_reporting();
8181

8282
$code = <<<EOF
8383
<?php
8484
8585
error_reporting($errorReporting);
8686
87-
require_once '$requirePath';
87+
require_once $requirePath;
8888
8989
\$loader = new Symfony\Component\ClassLoader\ClassLoader();
90-
\$loader->addPrefix('Symfony', '$symfonyPath');
90+
\$loader->addPrefix('Symfony', $symfonyPath);
9191
\$loader->register();
9292
93-
\$kernel = unserialize('$kernel');
94-
\$request = unserialize('$request');
93+
\$kernel = unserialize($kernel);
94+
\$request = unserialize($request);
9595
EOF;
9696

9797
return $code.$this->getHandleScript();

0 commit comments

Comments
 (0)