From 16dbad8bdf3768e911d82591e3b46949ac0d99c1 Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Sat, 4 Nov 2023 18:10:58 -0400 Subject: [PATCH] Fix path to Preference file if it contains a invalid path character (#750) * Fix path to shared preference files if it contains a invalid character * Lint --- .../androidcompat/io/sharedprefs/JavaSharedPreferences.kt | 8 +++++++- .../main/java/xyz/nulldev/androidcompat/util}/SafePath.kt | 2 +- .../kotlin/suwayomi/tachidesk/manga/impl/util/DirName.kt | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) rename {server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/storage => AndroidCompat/src/main/java/xyz/nulldev/androidcompat/util}/SafePath.kt (97%) diff --git a/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt index ea480af8..53f2931e 100644 --- a/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt +++ b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/io/sharedprefs/JavaSharedPreferences.kt @@ -19,6 +19,7 @@ import kotlinx.serialization.SerializationException import kotlinx.serialization.builtins.SetSerializer import kotlinx.serialization.builtins.serializer import mu.KotlinLogging +import xyz.nulldev.androidcompat.util.SafePath import xyz.nulldev.ts.config.ApplicationRootDir import java.util.Properties import kotlin.io.path.Path @@ -34,7 +35,12 @@ class JavaSharedPreferences(key: String) : SharedPreferences { private val logger = KotlinLogging.logger {} } - private val file = Path(ApplicationRootDir, "settings", "$key.xml") + private val file = + Path( + ApplicationRootDir, + "settings", + "${SafePath.buildValidFilename(key)}.xml", + ) private val properties = Properties().also { properties -> try { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/storage/SafePath.kt b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/util/SafePath.kt similarity index 97% rename from server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/storage/SafePath.kt rename to AndroidCompat/src/main/java/xyz/nulldev/androidcompat/util/SafePath.kt index 96a37b2e..7d722b9e 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/storage/SafePath.kt +++ b/AndroidCompat/src/main/java/xyz/nulldev/androidcompat/util/SafePath.kt @@ -1,4 +1,4 @@ -package suwayomi.tachidesk.manga.impl.util.storage +package xyz.nulldev.androidcompat.util /* * Copyright (C) Contributors to the Suwayomi project diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/DirName.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/DirName.kt index ab8df108..cbb7673a 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/DirName.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/DirName.kt @@ -14,10 +14,10 @@ import org.kodein.di.DI import org.kodein.di.conf.global import org.kodein.di.instance import suwayomi.tachidesk.manga.impl.util.source.GetCatalogueSource -import suwayomi.tachidesk.manga.impl.util.storage.SafePath import suwayomi.tachidesk.manga.model.table.ChapterTable import suwayomi.tachidesk.manga.model.table.MangaTable import suwayomi.tachidesk.server.ApplicationDirs +import xyz.nulldev.androidcompat.util.SafePath import java.io.File private val applicationDirs by DI.global.instance()