Page MenuHomePhorge

PHP 8.1 "strlen(null)" exceptions block adding 2FA factor
Closed, ResolvedPublic

Description

  1. PHP 8.2.6; Phorge at 4d1adf69392a230075b8a4799058821d11cab16d
  2. As an average user, go to your Multi-Factor Auth settings at http://phorge.localhost/settings/panel/multifactor/
  3. Select Add Auth Factor in upper right corner
  4. In the Choose Factor Type overlay dialog, select Mobile Phone App (TOTP)
[2023-05-12 16:56:32] EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=renderDashboardTabPanelContent, ref.master=d47289622650, ref.renderDashboardTabPanelContent=d47289622650), phorge(head=2faauth, ref.master=4d1adf69392a, ref.2faauth=3c5ca2c1fcac)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php:260]
  #1 <#2> PhabricatorMultiFactorSettingsPanel::processNew(AphrontRequest) called at [<phorge>/src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php:39]
  #2 <#2> PhabricatorMultiFactorSettingsPanel::processRequest(AphrontRequest) called at [<phorge>/src/applications/settings/controller/PhabricatorSettingsMainController.php:107]
  #3 <#2> PhabricatorSettingsMainController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #4 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #5 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #6 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #7 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203]
  #8 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
  1. Fix that exception; correctly end up on page "Add Authentication Factor" at http://phorge.localhost/settings/user/user3/page/multifactor/?providerPHID=PHID-FPRV-12345678901234567890
  2. Select Continue button
[2023-05-12 16:58:20] EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=renderDashboardTabPanelContent, ref.master=d47289622650, ref.renderDashboardTabPanelContent=d47289622650), phorge(head=2fauser, ref.master=4d1adf69392a, ref.2fauser=4d1adf69392a)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/auth/factor/PhabricatorAuthFactor.php:417]
  #1 <#2> PhabricatorAuthFactor::loadMFASyncToken(PhabricatorAuthFactorProvider, AphrontRequest, AphrontFormView, PhabricatorUser) called at [<phorge>/src/applications/auth/factor/PhabricatorTOTPAuthFactor.php:60]
  #2 <#2> PhabricatorTOTPAuthFactor::processAddFactorForm(PhabricatorAuthFactorProvider, AphrontFormView, AphrontRequest, PhabricatorUser) called at [<phorge>/src/applications/auth/storage/PhabricatorAuthFactorProvider.php:101]
  #3 <#2> PhabricatorAuthFactorProvider::processAddFactorForm(AphrontFormView, AphrontRequest, PhabricatorUser) called at [<phorge>/src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php:294]
  #4 <#2> PhabricatorMultiFactorSettingsPanel::processNew(AphrontRequest) called at [<phorge>/src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php:39]
  #5 <#2> PhabricatorMultiFactorSettingsPanel::processRequest(AphrontRequest) called at [<phorge>/src/applications/settings/controller/PhabricatorSettingsMainController.php:107]
  #6 <#2> PhabricatorSettingsMainController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #7 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #8 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #9 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #10 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203]
  #11 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
  1. Fix that exception; get to page "Add Authentication Factor" at http://phorge.localhost/settings/user/user3/page/multifactor/ which shows a QR code
  2. Scan code; enter code in field TOTP Code
  3. Select Continue button
  4. http://phorge.localhost/settings/user/user3/page/multifactor/?id=1 correctly lists the user's Authentication Factors

Related Objects

View Standalone Graph
This task is connected to more than 200 other tasks. Only direct parents and subtasks are shown here. Use View Standalone Graph to show more of the graph.