From 9d635781104e9b0729ebae069aaee498c09155d4 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Sat, 3 Jul 2021 13:27:10 +0200 Subject: [PATCH] fix potential crash with invalid OTP strings --- src/keepass2android/Totp/Kp2aTotp.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/keepass2android/Totp/Kp2aTotp.cs b/src/keepass2android/Totp/Kp2aTotp.cs index d6b3128b..2b72d61f 100644 --- a/src/keepass2android/Totp/Kp2aTotp.cs +++ b/src/keepass2android/Totp/Kp2aTotp.cs @@ -40,14 +40,25 @@ namespace keepass2android { if (entry == null) return null; - foreach (ITotpPluginAdapter adapter in _pluginAdapters) + + try { - TotpData totpData = adapter.GetTotpData(App.Kp2a.LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString()), Application.Context, false); - if (totpData.IsTotpEntry) + foreach (ITotpPluginAdapter adapter in _pluginAdapters) { - return adapter; + TotpData totpData = adapter.GetTotpData( + App.Kp2a.LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), + pair => pair.Value.ReadString()), Application.Context, false); + if (totpData.IsTotpEntry) + { + return adapter; + } } } + catch (Exception e) + { + Kp2aLog.LogUnexpectedError(e); + } + return null; }