minor #34319 [Security] make ExceptionEvent handle all throwables (xabbuh)

This PR was merged into the 5.0-dev branch.

Discussion
----------

[Security] make ExceptionEvent handle all throwables

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

fixes `master` after merging #34309 up

Commits
-------

eba2d8efc9 make ExceptionEvent handle all throwables
This commit is contained in:
Christian Flothmann 2019-11-11 13:28:58 +01:00
commit b1b45a568d
2 changed files with 12 additions and 17 deletions

View File

@ -29,28 +29,23 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/ */
final class ExceptionEvent extends RequestEvent final class ExceptionEvent extends RequestEvent
{ {
/** private $throwable;
* The exception object.
*
* @var \Exception
*/
private $exception;
/** /**
* @var bool * @var bool
*/ */
private $allowCustomResponseCode = false; private $allowCustomResponseCode = false;
public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Exception $e) public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e)
{ {
parent::__construct($kernel, $request, $requestType); parent::__construct($kernel, $request, $requestType);
$this->setException($e); $this->setThrowable($e);
} }
public function getException(): \Exception public function getThrowable(): \Throwable
{ {
return $this->exception; return $this->throwable;
} }
/** /**
@ -58,9 +53,9 @@ final class ExceptionEvent extends RequestEvent
* *
* This exception will be thrown if no response is set in the event. * This exception will be thrown if no response is set in the event.
*/ */
public function setException(\Exception $exception): void public function setThrowable(\Throwable $exception): void
{ {
$this->exception = $exception; $this->throwable = $exception;
} }
/** /**

View File

@ -42,9 +42,9 @@ class ExceptionListener implements EventSubscriberInterface
public function logKernelException(ExceptionEvent $event) public function logKernelException(ExceptionEvent $event)
{ {
$e = FlattenException::createFromThrowable($event->getException()); $e = FlattenException::createFromThrowable($event->getThrowable());
$this->logException($event->getException(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine())); $this->logException($event->getThrowable(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()));
} }
public function onKernelException(ExceptionEvent $event, string $eventName = null, EventDispatcherInterface $eventDispatcher = null) public function onKernelException(ExceptionEvent $event, string $eventName = null, EventDispatcherInterface $eventDispatcher = null)
@ -53,7 +53,7 @@ class ExceptionListener implements EventSubscriberInterface
return; return;
} }
$exception = $event->getException(); $exception = $event->getThrowable();
$request = $this->duplicateRequest($exception, $event->getRequest()); $request = $this->duplicateRequest($exception, $event->getRequest());
try { try {
@ -98,7 +98,7 @@ class ExceptionListener implements EventSubscriberInterface
]; ];
} }
protected function logException(\Exception $exception, string $message) protected function logException(\Throwable $exception, string $message)
{ {
if (null !== $this->logger) { if (null !== $this->logger) {
if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) { if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) {
@ -112,7 +112,7 @@ class ExceptionListener implements EventSubscriberInterface
/** /**
* Clones the request for the exception. * Clones the request for the exception.
*/ */
protected function duplicateRequest(\Exception $exception, Request $request): Request protected function duplicateRequest(\Throwable $exception, Request $request): Request
{ {
$attributes = [ $attributes = [
'_controller' => $this->controller, '_controller' => $this->controller,