Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Security] Typed property AbstractToken::$roleNames must not be accessed before initialization #60687

Closed
@Phu96

Description

@Phu96

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_

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions