diff options
author | Diogenes Molinares <amolinares19@gmail.com> | 2020-06-18 16:19:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-18 19:49:31 +0530 |
commit | 0a4bcc57f5d0f319f72f751c4406ca1877401b63 (patch) | |
tree | a3110cc111ab23249e8a7262ce2a3228ba055c9c | |
parent | 23b488a8eb69c99d5337538cc17690d2b637b9be (diff) |
Avoid destination's file outside repository (#861)
4 files changed, 14 insertions, 6 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt index b0f6fd44..0a768fd0 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt @@ -66,6 +66,7 @@ import com.zeapo.pwdstore.utils.PasswordRepository.Companion.initialize import com.zeapo.pwdstore.utils.PasswordRepository.Companion.isInitialized import com.zeapo.pwdstore.utils.PasswordRepository.PasswordSortOrder.Companion.getSortOrder import com.zeapo.pwdstore.utils.commitChange +import com.zeapo.pwdstore.utils.isInsideRepository import com.zeapo.pwdstore.utils.listFilesRecursively import com.zeapo.pwdstore.utils.requestInputFocusOnView import kotlinx.coroutines.Dispatchers @@ -666,15 +667,11 @@ class PasswordStore : AppCompatActivity(R.layout.activity_pwdstore) { }.launch(intent) } - private fun isInsideRepository(file: File): Boolean { - return file.canonicalPath.contains(getRepositoryDirectory(this).canonicalPath) - } - enum class CategoryRenameError(val resource: Int) { None(0), EmptyField(R.string.message_category_error_empty_field), CategoryExists(R.string.message_category_error_category_exists), - DestinationOutsideRepo(R.string.message_category_error_destination_outside_repo), + DestinationOutsideRepo(R.string.message_error_destination_outside_repo), } /** diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PasswordCreationActivity.kt b/app/src/main/java/com/zeapo/pwdstore/crypto/PasswordCreationActivity.kt index 1fdeafe9..c34d1a8a 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PasswordCreationActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PasswordCreationActivity.kt @@ -18,6 +18,7 @@ import androidx.lifecycle.lifecycleScope import com.github.ajalt.timberkt.e import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.PasswordEntry +import com.zeapo.pwdstore.utils.isInsideRepository import com.zeapo.pwdstore.R import com.zeapo.pwdstore.autofill.oreo.AutofillPreferences import com.zeapo.pwdstore.autofill.oreo.DirectoryStructure @@ -235,6 +236,11 @@ class PasswordCreationActivity : BasePgpActivity(), OpenPgpServiceConnection.OnB snackbar(message = getString(R.string.password_creation_duplicate_error)) return@executeApiAsync } + + if (!isInsideRepository(file)) { + snackbar(message = getString(R.string.message_error_destination_outside_repo)) + return@executeApiAsync + } try { file.outputStream().use { it.write(outputStream.toByteArray()) diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt index fa22b75e..c84465e9 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt +++ b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt @@ -23,6 +23,7 @@ import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKey import com.github.ajalt.timberkt.d import com.google.android.material.snackbar.Snackbar +import com.zeapo.pwdstore.PasswordStore import com.zeapo.pwdstore.git.GitAsyncTask import com.zeapo.pwdstore.git.GitOperation import com.zeapo.pwdstore.utils.PasswordRepository.Companion.getRepositoryDirectory @@ -123,3 +124,7 @@ fun <T : View> AlertDialog.requestInputFocusOnView(@IdRes id: Int) { val Context.autofillManager: AutofillManager? @RequiresApi(Build.VERSION_CODES.O) get() = getSystemService() + +fun Activity.isInsideRepository(file: File): Boolean { + return file.canonicalPath.contains(getRepositoryDirectory(this).canonicalPath) +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 58126392..c4f38a9f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -327,7 +327,7 @@ <string name="title_rename_folder">Rename folder</string> <string name="message_category_error_empty_field">Category name can\'t be empty</string> <string name="message_category_error_category_exists">Category name already exists</string> - <string name="message_category_error_destination_outside_repo">Destination must be within the repository</string> + <string name="message_error_destination_outside_repo">Destination must be within the repository</string> <string name="message_rename_folder">Enter destination for %1$s</string> <string name="button_create">Create</string> <string name="pref_search_on_start">Open search on start</string> |