]> git.codecow.com Git - libnemo.git/commitdiff
Throw on invalid base32 characters during conversion.
authorChris Duncan <chris@zoso.dev>
Sat, 9 Aug 2025 07:11:11 +0000 (00:11 -0700)
committerChris Duncan <chris@zoso.dev>
Sat, 9 Aug 2025 07:11:11 +0000 (00:11 -0700)
src/lib/convert.ts

index 5b20a0590609b2bb88a2ac1e0ce261c3641b687e..23624a0ed27f3857484923df949e492c90823de9 100644 (file)
@@ -17,10 +17,15 @@ export class base32 {
                        : 8 - leftover\r
                let bits = 0\r
                let value = 0\r
+               let letter = -1\r
                let index = 0\r
                let output = new Uint8Array(Math.ceil((base32.length * 5) / 8))\r
                for (let i = 0; i < base32.length; i++) {\r
-                       value = (value << 5) | ALPHABET.indexOf(base32[i])\r
+                       letter = ALPHABET.indexOf(base32[i])\r
+                       if (letter < 0) {\r
+                               throw new RangeError('Invalid base32 character', { cause: base32[i] })\r
+                       }\r
+                       value = (value << 5) | letter\r
                        bits += 5\r
                        if (bits >= 8) {\r
                                output[index++] = (value >>> (bits + offset - 8)) & 255\r