add limits to switch members and proxy tag length

This commit is contained in:
spiral 2021-08-25 13:42:08 -04:00
parent 52efb3c70a
commit 603123777d
No known key found for this signature in database
GPG Key ID: A6059F0CA0E1BD31
3 changed files with 6 additions and 0 deletions

View File

@ -78,6 +78,8 @@ namespace PluralKit.Bot
if (tagToAdd.IsEmpty) throw Errors.EmptyProxyTags(target);
if (target.ProxyTags.Contains(tagToAdd))
throw Errors.ProxyTagAlreadyExists(tagToAdd, target);
if (tagToAdd.ProxyString.Length > Limits.MaxProxyTagLength)
throw new PKError($"Proxy tag too long ({tagToAdd.ProxyString.Length} > {Limits.MaxProxyTagLength} characters).");
if (!await WarnOnConflict(tagToAdd))
throw Errors.GenericCancelled();

View File

@ -40,6 +40,8 @@ namespace PluralKit.Bot
// Make sure there are no dupes in the list
// We do this by checking if removing duplicate member IDs results in a list of different length
if (members.Select(m => m.Id).Distinct().Count() != members.Count) throw Errors.DuplicateSwitchMembers;
if (members.Count > Limits.MaxSwitchMemberCount)
throw new PKError($"Switch contains too many members ({members.Count} > {Limits.MaxSwitchMemberCount} members).");
// Find the last switch and its members if applicable
await using var conn = await _db.Obtain();

View File

@ -9,6 +9,8 @@ namespace PluralKit.Core {
public static int MaxMembersWarnThreshold (int memberLimit) => memberLimit - 50;
public static readonly int MaxGroupCount = 250;
public static readonly int MaxDescriptionLength = 1000;
public static readonly int MaxProxyTagLength = 100;
public static readonly int MaxSwitchMemberCount = 150;
public static readonly int MaxMemberNameLength = 100; // Fair bit larger than MaxProxyNameLength for bookkeeping
public static readonly int MaxGroupNameLength = 100;
public static readonly int MaxPronounsLength = 100;