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.
Tags
None
Referenced Files
F2163690: D25216.id750.diff
Thu, Apr 25, 14:26
F2163689: D25216.id744.diff
Thu, Apr 25, 14:25
F2163688: D25216.id712.diff
Thu, Apr 25, 14:25
F2163636: D25216.id.diff
Thu, Apr 25, 13:50
F2163612: D25216.diff
Thu, Apr 25, 13:40
Unknown Object (File)
Mon, Apr 22, 05:22
Unknown Object (File)
Sun, Apr 21, 15:02
Unknown Object (File)
Thu, Apr 18, 21:42

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
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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