Closed
Description
Symfony version(s) affected
7.3.0
Description
Typed property AbstractToken::$roleNames must not be accessed before initialization
How to reproduce
Using SchebTwoFactorBundle with Google authenticator, it happens after inputting 2fa code. The stack trace is the following
"type": "https://tools.ietf.org/html/rfc2616#section-10",
"title": "An error occurred",
"status": 500,
"detail": "Typed property Symfony\\Component\\Security\\Core\\Authentication\\Token\\AbstractToken::$roleNames must not be accessed before initialization",
"class": "Error",
"trace": [
{
"namespace": "",
"short_class": "",
"class": "",
"type": "",
"function": "",
"file": "/srv/app/vendor/symfony/security-core/Authentication/Token/AbstractToken.php",
"line": 164,
"args": []
},
{
"namespace": "Symfony\\Component\\Security\\Core\\Authentication\\Token",
"short_class": "AbstractToken",
"class": "Symfony\\Component\\Security\\Core\\Authentication\\Token\\AbstractToken",
"type": "->",
"function": "__toString",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php",
"line": 198,
"args": []
},
{
"namespace": "Monolog\\Formatter",
"short_class": "JsonFormatter",
"class": "Monolog\\Formatter\\JsonFormatter",
"type": "->",
"function": "normalize",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php",
"line": 177,
"args": [
[
"object",
"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"
],
[
"integer",
2
]
]
},
{
"namespace": "Monolog\\Formatter",
"short_class": "JsonFormatter",
"class": "Monolog\\Formatter\\JsonFormatter",
"type": "->",
"function": "normalize",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php",
"line": 177,
"args": [
[
"array",
{
"token": [
"object",
"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"
],
"authenticator": [
"string",
"Scheb\\TwoFactorBundle\\Security\\Http\\Authenticator\\TwoFactorAuthenticator"
]
}
],
[
"integer",
1
]
]
},
{
"namespace": "Monolog\\Formatter",
"short_class": "JsonFormatter",
"class": "Monolog\\Formatter\\JsonFormatter",
"type": "->",
"function": "normalize",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php",
"line": 167,
"args": [
[
"array",
{
"message": [
"string",
"Authenticator successful!"
],
"context": [
"array",
{
"token": [
"object",
"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"
],
"authenticator": [
"string",
"Scheb\\TwoFactorBundle\\Security\\Http\\Authenticator\\TwoFactorAuthenticator"
]
}
],
"level": [
"integer",
200
],
"level_name": [
"string",
"INFO"
],
"channel": [
"string",
"security"
],
"datetime": [
"object",
"Monolog\\JsonSerializableDateTimeImmutable"
],
"extra": [
"array",
{
"uid": [
"string",
"6f9a003"
],
"token": [
"array",
{
"authenticated": [
"boolean",
true
],
"roles": [
"array",
[]
],
"user_identifier": [
"string",
"admin.test"
]
}
],
"url": [
"string",
"/2fa_check"
],
"ip": [
"string",
"172.21.0.2"
],
"http_method": [
"string",
"POST"
],
"server": [
"string",
"ws.internal"
],
"referrer": [
"string",
"http://localhost:3005/two-factor"
]
}
]
}
]
]
},
{
"namespace": "Monolog\\Formatter",
"short_class": "NormalizerFormatter",
"class": "Monolog\\Formatter\\NormalizerFormatter",
"type": "->",
"function": "normalizeRecord",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php",
"line": 108,
"args": [
[
"object",
"Monolog\\LogRecord"
]
]
},
{
"namespace": "Monolog\\Formatter",
"short_class": "JsonFormatter",
"class": "Monolog\\Formatter\\JsonFormatter",
"type": "->",
"function": "normalizeRecord",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php",
"line": 77,
"args": [
[
"object",
"Monolog\\LogRecord"
]
]
},
{
"namespace": "Monolog\\Formatter",
"short_class": "JsonFormatter",
"class": "Monolog\\Formatter\\JsonFormatter",
"type": "->",
"function": "format",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php",
"line": 42,
"args": [
[
"object",
"Monolog\\LogRecord"
]
]
},
{
"namespace": "Monolog\\Handler",
"short_class": "AbstractProcessingHandler",
"class": "Monolog\\Handler\\AbstractProcessingHandler",
"type": "->",
"function": "handle",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php",
"line": 140,
"args": [
[
"object",
"Monolog\\LogRecord"
]
]
},
{
"namespace": "Monolog\\Handler",
"short_class": "FingersCrossedHandler",
"class": "Monolog\\Handler\\FingersCrossedHandler",
"type": "->",
"function": "handle",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Logger.php",
"line": 391,
"args": [
[
"object",
"Monolog\\LogRecord"
]
]
},
{
"namespace": "Monolog",
"short_class": "Logger",
"class": "Monolog\\Logger",
"type": "->",
"function": "addRecord",
"file": "/srv/app/vendor/monolog/monolog/src/Monolog/Logger.php",
"line": 607,
"args": [
[
"object",
"Monolog\\Level"
],
[
"string",
"Authenticator successful!"
],
[
"array",
{
"token": [
"object",
"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"
],
"authenticator": [
"string",
"Scheb\\TwoFactorBundle\\Security\\Http\\Authenticator\\TwoFactorAuthenticator"
]
}
]
]
},
{
"namespace": "Monolog",
"short_class": "Logger",
"class": "Monolog\\Logger",
"type": "->",
"function": "info",
"file": "/srv/app/vendor/symfony/security-http/Authentication/AuthenticatorManager.php",
"line": 218,
"args": [
[
"string",
"Authenticator successful!"
],
[
"array",
{
"token": [
"object",
"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"
],
"authenticator": [
"string",
"Scheb\\TwoFactorBundle\\Security\\Http\\Authenticator\\TwoFactorAuthenticator"
]
}
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Authentication",
"short_class": "AuthenticatorManager",
"class": "Symfony\\Component\\Security\\Http\\Authentication\\AuthenticatorManager",
"type": "->",
"function": "executeAuthenticator",
"file": "/srv/app/vendor/symfony/security-http/Authentication/AuthenticatorManager.php",
"line": 167,
"args": [
[
"object",
"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
],
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Authentication",
"short_class": "AuthenticatorManager",
"class": "Symfony\\Component\\Security\\Http\\Authentication\\AuthenticatorManager",
"type": "->",
"function": "executeAuthenticators",
"file": "/srv/app/vendor/symfony/security-http/Authentication/AuthenticatorManager.php",
"line": 149,
"args": [
[
"array",
[
[
"object",
"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
]
]
],
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Authentication",
"short_class": "AuthenticatorManager",
"class": "Symfony\\Component\\Security\\Http\\Authentication\\AuthenticatorManager",
"type": "->",
"function": "authenticateRequest",
"file": "/srv/app/vendor/symfony/security-http/Firewall/AuthenticatorManagerListener.php",
"line": 38,
"args": [
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Firewall",
"short_class": "AuthenticatorManagerListener",
"class": "Symfony\\Component\\Security\\Http\\Firewall\\AuthenticatorManagerListener",
"type": "->",
"function": "authenticate",
"file": "/srv/app/vendor/symfony/security-http/Authenticator/Debug/TraceableAuthenticatorManagerListener.php",
"line": 58,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug",
"short_class": "TraceableAuthenticatorManagerListener",
"class": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticatorManagerListener",
"type": "->",
"function": "authenticate",
"file": "/srv/app/vendor/symfony/security-bundle/Debug/WrappedLazyListener.php",
"line": 46,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
]
]
},
{
"namespace": "Symfony\\Bundle\\SecurityBundle\\Debug",
"short_class": "WrappedLazyListener",
"class": "Symfony\\Bundle\\SecurityBundle\\Debug\\WrappedLazyListener",
"type": "->",
"function": "authenticate",
"file": "/srv/app/vendor/symfony/security-http/Firewall/AbstractListener.php",
"line": 26,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http\\Firewall",
"short_class": "AbstractListener",
"class": "Symfony\\Component\\Security\\Http\\Firewall\\AbstractListener",
"type": "->",
"function": "__invoke",
"file": "/srv/app/vendor/symfony/security-bundle/Debug/TraceableFirewallListener.php",
"line": 91,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
]
]
},
{
"namespace": "Symfony\\Bundle\\SecurityBundle\\Debug",
"short_class": "TraceableFirewallListener",
"class": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener",
"type": "->",
"function": "callListeners",
"file": "/srv/app/vendor/symfony/security-http/Firewall.php",
"line": 92,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
],
[
"object",
"Generator"
]
]
},
{
"namespace": "Symfony\\Component\\Security\\Http",
"short_class": "Firewall",
"class": "Symfony\\Component\\Security\\Http\\Firewall",
"type": "->",
"function": "onKernelRequest",
"file": "/srv/app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php",
"line": 115,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
],
[
"string",
"kernel.request"
],
[
"object",
"Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher"
]
]
},
{
"namespace": "Symfony\\Component\\EventDispatcher\\Debug",
"short_class": "WrappedListener",
"class": "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener",
"type": "->",
"function": "__invoke",
"file": "/srv/app/vendor/symfony/event-dispatcher/EventDispatcher.php",
"line": 206,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
],
[
"string",
"kernel.request"
],
[
"object",
"Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher"
]
]
},
{
"namespace": "Symfony\\Component\\EventDispatcher",
"short_class": "EventDispatcher",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"function": "callListeners",
"file": "/srv/app/vendor/symfony/event-dispatcher/EventDispatcher.php",
"line": 56,
"args": [
[
"array",
[
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
],
[
"object",
"Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
]
]
],
[
"string",
"kernel.request"
],
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
]
]
},
{
"namespace": "Symfony\\Component\\EventDispatcher",
"short_class": "EventDispatcher",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"function": "dispatch",
"file": "/srv/app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php",
"line": 122,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
],
[
"string",
"kernel.request"
]
]
},
{
"namespace": "Symfony\\Component\\EventDispatcher\\Debug",
"short_class": "TraceableEventDispatcher",
"class": "Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher",
"type": "->",
"function": "dispatch",
"file": "/srv/app/vendor/symfony/http-kernel/HttpKernel.php",
"line": 159,
"args": [
[
"object",
"Symfony\\Component\\HttpKernel\\Event\\RequestEvent"
],
[
"string",
"kernel.request"
]
]
},
{
"namespace": "Symfony\\Component\\HttpKernel",
"short_class": "HttpKernel",
"class": "Symfony\\Component\\HttpKernel\\HttpKernel",
"type": "->",
"function": "handleRaw",
"file": "/srv/app/vendor/symfony/http-kernel/HttpKernel.php",
"line": 76,
"args": [
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
],
[
"integer",
1
]
]
},
{
"namespace": "Symfony\\Component\\HttpKernel",
"short_class": "HttpKernel",
"class": "Symfony\\Component\\HttpKernel\\HttpKernel",
"type": "->",
"function": "handle",
"file": "/srv/app/vendor/symfony/http-kernel/Kernel.php",
"line": 182,
"args": [
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
],
[
"integer",
1
],
[
"boolean",
true
]
]
},
{
"namespace": "Symfony\\Component\\HttpKernel",
"short_class": "Kernel",
"class": "Symfony\\Component\\HttpKernel\\Kernel",
"type": "->",
"function": "handle",
"file": "/srv/app/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php",
"line": 35,
"args": [
[
"object",
"Symfony\\Component\\HttpFoundation\\Request"
]
]
},
{
"namespace": "Symfony\\Component\\Runtime\\Runner\\Symfony",
"short_class": "HttpKernelRunner",
"class": "Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner",
"type": "->",
"function": "run",
"file": "/srv/app/vendor/autoload_runtime.php",
"line": 29,
"args": []
},
{
"namespace": "",
"short_class": "",
"class": "",
"type": "",
"function": "require_once",
"file": "/srv/app/public/index.php",
"line": 5,
"args": [
[
"string",
"/srv/app/vendor/autoload_runtime.php"
]
]
}
]
}```
### Possible Solution
_No response_
### Additional Context
_No response_