AK: Reject invalid Base64 encoded string lengths

This commit is contained in:
Timothy Flynn 2024-03-24 08:59:00 -04:00 committed by Andreas Kling
parent 4ecf4c7617
commit 7e38653492
2 changed files with 8 additions and 0 deletions

View file

@ -34,6 +34,9 @@ static ErrorOr<ByteBuffer> decode_base64_impl(StringView input, ReadonlySpan<i16
{
input = input.trim_whitespace();
if (input.length() % 4 != 0)
return Error::from_string_literal("Invalid length of Base64 encoded string");
auto get = [&](size_t offset, bool* is_padding) -> ErrorOr<u8> {
if (offset >= input.length())
return 0;

View file

@ -40,6 +40,11 @@ TEST_CASE(test_decode_invalid)
EXPECT(decode_base64("aGVsbG8_d29ybGQ="sv).is_error());
EXPECT(decode_base64url("aGVsbG8/d29ybGQ="sv).is_error());
EXPECT(decode_base64("Y"sv).is_error());
EXPECT(decode_base64("YQ"sv).is_error());
EXPECT(decode_base64("YQ="sv).is_error());
EXPECT(decode_base64("PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMC42MDUiIGhlaWdodD0iMTUuNTU1Ij48cGF0aCBmaWxsPSIjODg5IiBkPSJtMi44MjggMTUuNTU1IDcuNzc3LTcuNzc5TDIuODI4IDAgMCAyLjgyOGw0Ljk0OSA0Ljk0OEwwIDEyLjcyN2wyLjgyOCAyLjgyOHoiLz48L3N2Zz4"sv).is_error());
}
TEST_CASE(test_decode_only_padding)