aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-05-16 22:43:00 -0700
committerGravatar MarkKoz <[email protected]>2020-05-16 22:43:00 -0700
commitad154f7f0d7daa3f962433f77d1cdd11cc66bfe0 (patch)
treee5d96371c3ada189d90e4d79118326460d69023c
parentToken remover: use strict check for digits in token ID (diff)
Add a utility function to pad base64 data
-rw-r--r--bot/cogs/token_remover.py5
-rw-r--r--bot/utils/__init__.py5
2 files changed, 8 insertions, 2 deletions
diff --git a/bot/cogs/token_remover.py b/bot/cogs/token_remover.py
index 43c12c4f7..cae482e6e 100644
--- a/bot/cogs/token_remover.py
+++ b/bot/cogs/token_remover.py
@@ -7,6 +7,7 @@ import typing as t
from discord import Colour, Message
from discord.ext.commands import Cog
+from bot import utils
from bot.bot import Bot
from bot.cogs.moderation import ModLog
from bot.constants import Channels, Colours, Event, Icons
@@ -146,7 +147,7 @@ class TokenRemover(Cog):
See: https://discordapp.com/developers/docs/reference#snowflakes
"""
- b64_content += '=' * (-len(b64_content) % 4)
+ b64_content = utils.pad_base64(b64_content)
try:
decoded_bytes: bytes = base64.b64decode(b64_content)
@@ -165,7 +166,7 @@ class TokenRemover(Cog):
If the timestamp is greater than the Discord epoch, it's probably valid.
See: https://i.imgur.com/7WdehGn.png
"""
- b64_content += '=' * (-len(b64_content) % 4)
+ b64_content = utils.pad_base64(b64_content)
try:
decoded_bytes = base64.urlsafe_b64decode(b64_content)
diff --git a/bot/utils/__init__.py b/bot/utils/__init__.py
index 9b32e515d..1dd0636df 100644
--- a/bot/utils/__init__.py
+++ b/bot/utils/__init__.py
@@ -7,3 +7,8 @@ class CogABCMeta(CogMeta, ABCMeta):
"""Metaclass for ABCs meant to be implemented as Cogs."""
pass
+
+
+def pad_base64(data: str) -> str:
+ """Return base64 `data` with padding characters to ensure its length is a multiple of 4."""
+ return data + "=" * (-len(data) % 4)