From 64a6e0f4e916122fdd00df2e2b48d96ea7d49c1c Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 25 Jul 2020 14:37:16 +0530 Subject: Properly handle files without passwords (#969) * Properly handle files without passwords Fixes #967 Signed-off-by: Harsh Shandilya * Fix tests Signed-off-by: Harsh Shandilya * Only look for TOTP URI Signed-off-by: Harsh Shandilya (cherry picked from commit 62dbc183d52d93860228316b209ec5aa15f16a08) --- app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/model') diff --git a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt index b4fd0165..2cd31256 100644 --- a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt +++ b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt @@ -31,7 +31,7 @@ class PasswordEntry(content: String, private val totpFinder: TotpFinder = UriTot init { val passContent = content.split("\n".toRegex(), 2).toTypedArray() - password = passContent[0] + password = if (UriTotpFinder.TOTP_FIELDS.any { passContent[0].startsWith(it) }) "" else passContent[0] extraContent = findExtraContent(passContent) username = findUsername() digits = findOtpDigits(content) @@ -85,8 +85,10 @@ class PasswordEntry(content: String, private val totpFinder: TotpFinder = UriTot return null } - private fun findExtraContent(passContent: Array): String { - return if (passContent.size > 1) passContent[1] else "" + private fun findExtraContent(passContent: Array) = when { + password.isEmpty() && passContent[0].isNotEmpty() -> passContent[0] + passContent.size > 1 -> passContent[1] + else -> "" } private fun findTotpSecret(decryptedContent: String): String? { -- cgit v1.2.3