Page MenuHomePhorge

Fix PHP 8.1 "strlen(null)" exceptions setting up Username/Password Authentication Provider
ClosedPublic

Authored by aklapper on May 10 2023, 18:09.

Details

Summary

strlen() was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts phutil_nonempty_string() as a replacement.

Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.

Closes T15383

Test Plan

Applied these two changes; afterwards "Username/Password" page at /auth/config/view/1/ gets rendered in web browser.

Additional tests (you need D25231 to complete this test plan):

  • Create WordPress Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Twitter Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Amazon Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Asana Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Bitbucket Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Disqus Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Disqus Auth; Edit; Disable Enable (and Disable again to cleanup)
  • Create Facebook Auth; Edit; Disable Enable (and Disable again to cleanup)
  • Create GitHub Auth; Edit; Disable Enable (and Disable again to cleanup)
  • Create JIRA Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Google Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create LDAP Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Phorge Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Slack Auth; Edit; Disable; Enable (and Disable again to cleanup)
  • Create Twitch.tv Auth; Edit; Disable; Enable (and Disable again to cleanup)

Diff Detail

Repository
rP Phorge
Branch
setupAuthProv (branched from master)
Lint
Lint Passed
Unit
Test Failures
Build Status
Buildable 393
Build 393: arc lint + arc unit

Unit TestsFailed

TimeTest
67 msPhabricatorAuthSSHKeyTestCase::testRevokeSSHKey
EXCEPTION (RuntimeException): Implicit conversion from float 76.50000000000001 to int loses precision #0 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(192): PhutilErrorHandler::handleError(8192, '...', '...', 192) #1 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(148): PhabricatorFilesComposeAvatarBuiltinFile::rgba2gd(Array)
371 msPhabricatorAuthPasswordTestCase::testCompare
2 assertions passed.
21 msPhabricatorAuthPasswordTestCase::testPasswordBlocklisting
15 assertions passed.
1,718 msPhabricatorAuthPasswordTestCase::testPasswordEngine
20 assertions passed.
323 msPhabricatorAuthPasswordTestCase::testPasswordUpgrade
9 assertions passed.
View Full Test Results (1 Failed · 11 Passed)

Event Timeline

Thanks for this patch (again)!

Believe me or not but I tested this intensively, following the test plan. If you don't believe me:

Phorge Auth providers used.png (1×869 px, 172 KB)

I hope this will not explode in the future like a nuclear bomb as we usually see then.

sgtm

This revision is now accepted and ready to land.May 19 2023, 15:30