From 008a908ec6eb6b3d2f41000e215c6f4853f64cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Sat, 14 May 2016 17:19:22 +0200 Subject: [PATCH] Use CanConvertFrom to determine whether string keys can be converted to TKey to prevent FormatException exceptions --- src/OpenIddict.EF/OpenIddictStore.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/OpenIddict.EF/OpenIddictStore.cs b/src/OpenIddict.EF/OpenIddictStore.cs index 88a643e2..40b2c5e5 100644 --- a/src/OpenIddict.EF/OpenIddictStore.cs +++ b/src/OpenIddict.EF/OpenIddictStore.cs @@ -26,7 +26,15 @@ namespace OpenIddict { } public virtual Task FindApplicationByIdAsync(string identifier, CancellationToken cancellationToken) { - var key = (TKey) TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(identifier); + var converter = TypeDescriptor.GetConverter(typeof(TKey)); + + // If the string key cannot be converted to TKey, return null + // to indicate that the requested application doesn't exist. + if (!converter.CanConvertFrom(typeof(string))) { + return Task.FromResult(null); + } + + var key = (TKey) converter.ConvertFromInvariantString(identifier); return Applications.SingleOrDefaultAsync(application => application.Id.Equals(key), cancellationToken); }