From f561b6044c34d3f8a4f16e2d351dd78d073d8b2a Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 2 Aug 2020 01:52:09 +0200 Subject: [PATCH] Invaliding enum sort key --- Kyoo.CommonAPI/LocalRepository.cs | 12 ++++++++---- Kyoo/Views/WebClient | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Kyoo.CommonAPI/LocalRepository.cs b/Kyoo.CommonAPI/LocalRepository.cs index 67442f12..cfc1325a 100644 --- a/Kyoo.CommonAPI/LocalRepository.cs +++ b/Kyoo.CommonAPI/LocalRepository.cs @@ -69,16 +69,20 @@ namespace Kyoo.Controllers { if (where != null) query = query.Where(where); - + Expression> sortKey = sort.Key ?? defaultSort; + Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert + ? ((UnaryExpression)sortKey.Body).Operand + : sortKey.Body; + + if (typeof(Enum).IsAssignableFrom(sortExpression.Type)) + throw new ArgumentException("Invalid sort key."); + query = sort.Descendant ? query.OrderByDescending(sortKey) : query.OrderBy(sortKey); if (limit.AfterID != 0) { TValue after = await get(limit.AfterID); - Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert - ? ((UnaryExpression)sortKey.Body).Operand - : sortKey.Body; Expression key = Expression.Constant(sortKey.Compile()(after), sortExpression.Type); query = query.Where(Expression.Lambda>( ApiHelper.StringCompatibleExpression(Expression.GreaterThan, sortExpression, key), diff --git a/Kyoo/Views/WebClient b/Kyoo/Views/WebClient index 45afdbb4..d692f9f3 160000 --- a/Kyoo/Views/WebClient +++ b/Kyoo/Views/WebClient @@ -1 +1 @@ -Subproject commit 45afdbb44ed28b5ee408923b6d4d13534e284517 +Subproject commit d692f9f3d364d7d2748205374a3a84fb1fd4a938