From aa799d4d9b1186be0e48367715e34c665ee7404c Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 9 Aug 2025 00:11:11 -0700 Subject: [PATCH] Throw on invalid base32 characters during conversion. --- src/lib/convert.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/convert.ts b/src/lib/convert.ts index 5b20a05..23624a0 100644 --- a/src/lib/convert.ts +++ b/src/lib/convert.ts @@ -17,10 +17,15 @@ export class base32 { : 8 - leftover let bits = 0 let value = 0 + let letter = -1 let index = 0 let output = new Uint8Array(Math.ceil((base32.length * 5) / 8)) for (let i = 0; i < base32.length; i++) { - value = (value << 5) | ALPHABET.indexOf(base32[i]) + letter = ALPHABET.indexOf(base32[i]) + if (letter < 0) { + throw new RangeError('Invalid base32 character', { cause: base32[i] }) + } + value = (value << 5) | letter bits += 5 if (bits >= 8) { output[index++] = (value >>> (bits + offset - 8)) & 255 -- 2.47.3