Invaliding enum sort key

This commit is contained in:
Zoe Roux 2020-08-02 01:52:09 +02:00
parent d77cae6d2b
commit f561b6044c
2 changed files with 9 additions and 5 deletions

View File

@ -69,16 +69,20 @@ namespace Kyoo.Controllers
{
if (where != null)
query = query.Where(where);
Expression<Func<TValue, object>> 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<Func<TValue, bool>>(
ApiHelper.StringCompatibleExpression(Expression.GreaterThan, sortExpression, key),

@ -1 +1 @@
Subproject commit 45afdbb44ed28b5ee408923b6d4d13534e284517
Subproject commit d692f9f3d364d7d2748205374a3a84fb1fd4a938