From 180dcb3a412dc91e23123561d2c6552747c759c0 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 21 Nov 2025 11:45:51 -0500 Subject: [PATCH] Fix potential platform-specific storage crash. Fixes #14448 --- .../main/java/org/signal/core/util/DiskUtil.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/core-util/src/main/java/org/signal/core/util/DiskUtil.kt b/core-util/src/main/java/org/signal/core/util/DiskUtil.kt index b71727c713..8d13bd0403 100644 --- a/core-util/src/main/java/org/signal/core/util/DiskUtil.kt +++ b/core-util/src/main/java/org/signal/core/util/DiskUtil.kt @@ -11,9 +11,12 @@ import android.os.Build import android.os.StatFs import android.os.storage.StorageManager import androidx.annotation.RequiresApi +import org.signal.core.util.logging.Log object DiskUtil { + private val TAG = Log.tag(DiskUtil::class) + /** * Gets the remaining storage usable by the application. * @@ -48,7 +51,12 @@ object DiskUtil { val storageStatsManager = context.getSystemService(Context.STORAGE_STATS_SERVICE) as StorageStatsManager val appStorageUuid = storageManager.getUuidForPath(context.filesDir) - return storageStatsManager.getFreeBytes(appStorageUuid) + return try { + storageStatsManager.getFreeBytes(appStorageUuid) + } catch (e: Throwable) { + Log.w(TAG, "Hit a weird platform bug! Falling back to legacy.", e) + getAvailableStorageBytesLegacy(context) + } } private fun getAvailableStorageBytesLegacy(context: Context): Long { @@ -62,7 +70,12 @@ object DiskUtil { val storageStatsManager = context.getSystemService(Context.STORAGE_STATS_SERVICE) as StorageStatsManager val appStorageUuid = storageManager.getUuidForPath(context.filesDir) - return storageStatsManager.getTotalBytes(appStorageUuid) + return try { + storageStatsManager.getTotalBytes(appStorageUuid) + } catch (e: Throwable) { + Log.w(TAG, "Hit a weird platform bug! Falling back to legacy.", e) + getTotalDiskSizeLegacy(context) + } } private fun getTotalDiskSizeLegacy(context: Context): Long {