Add a character limit to avatar URLs (256 for now)

This commit is contained in:
Ske 2020-05-05 16:04:17 +02:00
parent 2579683da9
commit f803b9a392
5 changed files with 6 additions and 2 deletions

View file

@ -72,6 +72,7 @@ namespace PluralKit.Bot
}
else if (ctx.RemainderOrNull() is string url)
{
if (url.Length > Limits.MaxUriLength) throw Errors.InvalidUrl(url);
await AvatarUtils.VerifyAvatarOrThrow(url);
target.AvatarUrl = url;
await _data.SaveMember(target);
@ -141,6 +142,7 @@ namespace PluralKit.Bot
}
else if (ctx.RemainderOrNull() is string url)
{
if (url.Length > Limits.MaxUriLength) throw Errors.InvalidUrl(url);
await AvatarUtils.VerifyAvatarOrThrow(url);
guildData.AvatarUrl = url;
await _data.SetMemberGuildSettings(target, ctx.Guild.Id, guildData);

View file

@ -156,6 +156,7 @@ namespace PluralKit.Bot
{
// They can't both be null - otherwise we would've hit the conditional at the very top
string url = ctx.RemainderOrNull() ?? ctx.Message.Attachments.FirstOrDefault()?.ProxyUrl;
if (url?.Length > Limits.MaxUriLength) throw Errors.InvalidUrl(url);
await ctx.BusyIndicator(() => AvatarUtils.VerifyAvatarOrThrow(url));
ctx.System.AvatarUrl = url;

View file

@ -59,6 +59,7 @@ namespace PluralKit.Bot {
public static PKError AvatarInvalid => new PKError($"Could not read image file - perhaps it's corrupted or the wrong format. Try a different image.");
public static PKError UserHasNoAvatar => new PKError("The given user has no avatar set.");
public static PKError InvalidUrl(string url) => new PKError($"The given URL is invalid.");
public static PKError UrlTooLong(string url) => new PKError($"The given URL is too long ({url.Length}/{Limits.MaxUriLength} characters).");
public static PKError AccountAlreadyLinked => new PKError("That account is already linked to your system.");
public static PKError AccountNotLinked => new PKError("That account isn't linked to your system.");