Page MenuHomePhorge

Fix various potential PHP 8.1 "strlen(null)" exceptions
ClosedPublic

Authored by aklapper on Aug 14 2024, 20:03.
Tags
None
Referenced Files
F2951672: D25778.1738910546.diff
Thu, Feb 6, 06:42
F2932629: D25778.1737740156.diff
Thu, Jan 23, 17:35
F2932627: D25778.1737740155.diff
Thu, Jan 23, 17:35
F2932626: D25778.1737740154.diff
Thu, Jan 23, 17:35
F2932487: D25778.1737736980.diff
Thu, Jan 23, 16:43
F2918282: D25778.1737522493.diff
Tue, Jan 21, 05:08
F2904814: D25778.1737334069.diff
Sun, Jan 19, 00:47
F2899488: D25778.1737262284.diff
Jan 18 2025, 04:51

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.

All lines changed in this patch had Parameter #1 $string of function strlen expects string, string|null given reported by PHPStan. Thus these should be safe to replace with phutil_nonempty_string as no calls care about the actual strlen() return value (length of a string).

Test Plan

Run static code analysis via phpstan analyse -l 9

Diff Detail

Repository
rP Phorge
Branch
php81StrlenVsStringNull
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 1528
Build 1528: arc lint + arc unit

Event Timeline

src/infrastructure/markup/rule/PhabricatorKeyboardRemarkupRule.php
25

At this point $v is a trimmed string, never null

sgtm

src/applications/diffusion/query/lowlevel/DiffusionLowLevelCommitQuery.php
129–133

✅ verified with my little eyes - result is coming from phutil_utf8ize() and it's a string or NULL

src/infrastructure/markup/rule/PhabricatorKeyboardRemarkupRule.php
25

✅ verified with my little eyes - the result comes from trim() so it's a string and never null

This revision is now accepted and ready to land.Aug 19 2024, 12:31