1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 14:52:41 +01:00

Fix PHP 8.1 "strlen(null)" exception setting Passphrase Credential

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.

```
EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=master, ref.master=788098096e11), phorge(head=master, ref.master=840a7fab2bc8)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/passphrase/view/PassphraseCredentialControl.php:53]
```

Closes T15580

Test Plan: Set URI for a Diffusion Repository, select URI and select "Set Credential". Page "Edit Repository URI" at `/diffusion/123/uri/edit/456/` renders as expected in web browser.

Reviewers: O1 Blessed Committers, Matthew

Reviewed By: O1 Blessed Committers, Matthew

Subscribers: avivey, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15580

Differential Revision: https://we.phorge.it/D25370
This commit is contained in:
Andre Klapper 2023-08-11 20:56:23 +02:00
parent eb0bb17368
commit 10ee019785

View file

@ -50,7 +50,8 @@ final class PassphraseCredentialControl extends AphrontFormControl {
// credential. Populate it into the menu to allow them to save the form // credential. Populate it into the menu to allow them to save the form
// without making any changes. // without making any changes.
$current_phid = $this->getValue(); $current_phid = $this->getValue();
if (strlen($current_phid) && empty($options_map[$current_phid])) { if (phutil_nonempty_string($current_phid) &&
empty($options_map[$current_phid])) {
$viewer = $this->getViewer(); $viewer = $this->getViewer();
$current_name = null; $current_name = null;