From b4bc480817cd3bc28111358ab6dbd8273aea5a24 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Sun, 11 Aug 2024 22:59:50 +0200 Subject: [PATCH] Fix PHP 8.1 "strlen(null)" exceptions creating an OAuth provider 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. ``` ERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php:163] ``` ``` ERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php:178] ``` ``` ERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php:147] ``` Closes T15912 Test Plan: As an admin, create an OAuth provider (such as using Bitbucket) and check the error logs or Dark Console. Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15912 Differential Revision: https://we.phorge.it/D25771 --- .../auth/provider/PhabricatorOAuth1AuthProvider.php | 4 ++-- .../auth/provider/PhabricatorOAuthAuthProvider.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php b/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php index 7133cff042..672772eab3 100644 --- a/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php +++ b/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php @@ -160,7 +160,7 @@ abstract class PhabricatorOAuth1AuthProvider switch ($key) { case self::PROPERTY_CONSUMER_KEY: - if (strlen($old)) { + if (phutil_nonempty_string($old)) { return pht( '%s updated the OAuth consumer key for this provider from '. '"%s" to "%s".', @@ -175,7 +175,7 @@ abstract class PhabricatorOAuth1AuthProvider $new); } case self::PROPERTY_CONSUMER_SECRET: - if (strlen($old)) { + if (phutil_nonempty_string($old)) { return pht( '%s updated the OAuth consumer secret for this provider.', $xaction->renderHandleLink($author_phid)); diff --git a/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php b/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php index df76c655f3..f813a37c43 100644 --- a/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php +++ b/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php @@ -144,7 +144,7 @@ abstract class PhabricatorOAuthAuthProvider extends PhabricatorAuthProvider { switch ($key) { case self::PROPERTY_NOTE: - if (strlen($old)) { + if (phutil_nonempty_string($old)) { return pht( '%s updated the OAuth application notes for this provider.', $xaction->renderHandleLink($author_phid));