From cf32a4b7cc50cf7848862efd6c50abfa5ce0725d Mon Sep 17 00:00:00 2001 From: RealKinetix Date: Tue, 20 Jul 2021 10:11:04 -0700 Subject: [PATCH] Sanitize negative status count on APContact Similar to PR #10499, Mastodon apparently has some counting flaws and can present a negative status count for a user, causing Friendica to fail (at least under PHP 8) with: [20-Jul-2021 16:35:18 UTC] PHP Fatal error: Uncaught PDOException: SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'statuses_count' at row 1 in /home/friendicadev/friendica/src/Database/Database.php:560 Stack trace: thrown in /home/friendicadev/friendica/src/Database/Database.php on line 560 This change prevents values lower than 0 from being assigned to statuses_count. --- src/Model/APContact.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 7bdde60c6..0a9d45f35 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -330,6 +330,11 @@ class APContact $outbox = ActivityPub::fetchContent($apcontact['outbox']); } if (!empty($outbox['totalItems'])) { + // Mastodon seriously allows for this condition? + // Jul 20 2021 - See https://chaos.social/@m11 for a negative posts count + if ($outbox['totalItems'] < 0) { + $outbox['totalItems'] = 0; + } $apcontact['statuses_count'] = $outbox['totalItems']; } }