From ea7d48fb67789ca89069119b19164f73a1329cac Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Wed, 16 Oct 2024 08:57:40 -0500 Subject: [PATCH] detekt Signed-off-by: rapterjet2004 --- .../main/java/com/nextcloud/talk/utils/FileUtils.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/utils/FileUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/FileUtils.kt index aeff10873..b3a51c9cb 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/FileUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/FileUtils.kt @@ -30,6 +30,7 @@ import android.content.ContentResolver import android.content.Context import android.database.Cursor import android.net.Uri +import android.os.Build import android.provider.OpenableColumns import android.util.Log import java.io.File @@ -115,7 +116,17 @@ object FileUtils { fun copyFileToCache(context: Context, sourceFileUri: Uri, filename: String): File? { val cachedFile = File(context.cacheDir, filename) - if (!cachedFile.canonicalPath.startsWith(context.cacheDir.canonicalPath, true)) { + val aboveOrEqualAPI26Check = + Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + !cachedFile.toPath().normalize().startsWith(context.cacheDir.toPath()) + + val belowAPI26Check = + Build.VERSION.SDK_INT < Build.VERSION_CODES.O && + !cachedFile.canonicalPath.startsWith(context.cacheDir.canonicalPath, true) + + val isOutsideCacheDir = aboveOrEqualAPI26Check || belowAPI26Check + + if (isOutsideCacheDir) { Log.w(TAG, "cachedFile was not created in cacheDir. Aborting for security reasons.") cachedFile.delete() return null