Skip to content

Commit 1eed758

Browse files
Merge branch '3.0' into 3.1
* 3.0: [FrameworkBundle] Fix fixtures [HttpKernel] Inline ValidateRequestListener logic into HttpKernel fixed HttpKernel dependencies after #18688 Conflicts: src/Symfony/Component/HttpKernel/HttpKernel.php src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php
2 parents 9fc82a7 + 2183634 commit 1eed758

File tree

5 files changed

+37
-124
lines changed

5 files changed

+37
-124
lines changed

EventListener/ValidateRequestListener.php

Lines changed: 0 additions & 56 deletions
This file was deleted.

HttpKernel.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
1616
use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
1717
use Symfony\Component\HttpKernel\Event\FilterControllerArgumentsEvent;
18+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1819
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1920
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
2021
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
@@ -24,6 +25,7 @@
2425
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
2526
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
2627
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
28+
use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
2729
use Symfony\Component\HttpFoundation\Request;
2830
use Symfony\Component\HttpFoundation\RequestStack;
2931
use Symfony\Component\HttpFoundation\Response;
@@ -117,6 +119,13 @@ public function terminateWithException(\Exception $exception)
117119
*/
118120
private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
119121
{
122+
if (self::MASTER_REQUEST === $type && $request::getTrustedProxies()) {
123+
try {
124+
$request->getClientIps();
125+
} catch (ConflictingHeadersException $e) {
126+
throw new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e);
127+
}
128+
}
120129
$this->requestStack->push($request);
121130

122131
// request

Tests/EventListener/ValidateRequestListenerTest.php

Lines changed: 0 additions & 67 deletions
This file was deleted.

Tests/HttpKernelTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,33 @@ public function testVerifyRequestStackPushPopDuringHandle()
302302
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
303303
}
304304

305+
/**
306+
* @expectedException Symfony\Component\HttpKernel\Exception\BadRequestHttpException
307+
*/
308+
public function testInconsistentClientIpsOnMasterRequests()
309+
{
310+
$kernel = $this->getHttpKernel(new EventDispatcher());
311+
$request = new Request();
312+
$request->setTrustedProxies(array('1.1.1.1'));
313+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
314+
$request->headers->set('FORWARDED', '2.2.2.2');
315+
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
316+
317+
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
318+
}
319+
320+
public function testInconsistentClientIpsOnSubRequests()
321+
{
322+
$kernel = $this->getHttpKernel(new EventDispatcher());
323+
$request = new Request();
324+
$request->setTrustedProxies(array('1.1.1.1'));
325+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
326+
$request->headers->set('FORWARDED', '2.2.2.2');
327+
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
328+
329+
$this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $kernel->handle($request, $kernel::SUB_REQUEST, false));
330+
}
331+
305332
private function getHttpKernel(EventDispatcherInterface $eventDispatcher, $controller = null, RequestStack $requestStack = null, array $arguments = array())
306333
{
307334
if (null === $controller) {

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=5.5.9",
2020
"symfony/event-dispatcher": "~2.8|~3.0",
21-
"symfony/http-foundation": "~2.8|~3.0",
21+
"symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2",
2222
"symfony/debug": "~2.8|~3.0",
2323
"psr/log": "~1.0"
2424
},

0 commit comments

Comments
 (0)