From fb8f85f30fd682bf5db800f6c653d0242eee2811 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Wed, 10 Sep 2025 12:54:37 +0200 Subject: [PATCH 1/2] fix(ownCloud): ensure that `accounts.display_name` fits into `users.displayname` `user.displayname` only allows 64 characters but old `accounts.display_name` allowed 255 characters. Signed-off-by: Ferdinand Thiessen --- lib/private/Repair/Owncloud/SaveAccountsTableData.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/private/Repair/Owncloud/SaveAccountsTableData.php b/lib/private/Repair/Owncloud/SaveAccountsTableData.php index 08665687b2990..8d6e2e71b5485 100644 --- a/lib/private/Repair/Owncloud/SaveAccountsTableData.php +++ b/lib/private/Repair/Owncloud/SaveAccountsTableData.php @@ -172,7 +172,8 @@ protected function migrateUserInfo(IQueryBuilder $update, $userdata) { } if ($userdata['display_name'] !== null) { - $update->setParameter('displayname', $userdata['display_name']) + // user.displayname only allows 64 characters but old accounts.display_name allowed 255 characters + $update->setParameter('displayname', substr($userdata['display_name'], 0, 64)) ->setParameter('userid', $userdata['user_id']); $update->execute(); } From 9c365d00b649eb02ae7671c19ed4afb652260c12 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Thu, 11 Sep 2025 11:17:43 +0200 Subject: [PATCH 2/2] fix: use `mb_substr` Signed-off-by: Ferdinand Thiessen --- lib/private/Repair/Owncloud/SaveAccountsTableData.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/Repair/Owncloud/SaveAccountsTableData.php b/lib/private/Repair/Owncloud/SaveAccountsTableData.php index 8d6e2e71b5485..e934dda5e8bb6 100644 --- a/lib/private/Repair/Owncloud/SaveAccountsTableData.php +++ b/lib/private/Repair/Owncloud/SaveAccountsTableData.php @@ -173,7 +173,7 @@ protected function migrateUserInfo(IQueryBuilder $update, $userdata) { if ($userdata['display_name'] !== null) { // user.displayname only allows 64 characters but old accounts.display_name allowed 255 characters - $update->setParameter('displayname', substr($userdata['display_name'], 0, 64)) + $update->setParameter('displayname', mb_substr($userdata['display_name'], 0, 64)) ->setParameter('userid', $userdata['user_id']); $update->execute(); }