From e67b4e73b57d152c4897acd66cf1347cbdf20444 Mon Sep 17 00:00:00 2001 From: Justin Whear Date: Wed, 15 Feb 2023 12:58:53 -0800 Subject: Fix 2063 (#2079) --- src/base64/base64.zig | 5 +++-- test/bun.js/buffer.test.js | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/base64/base64.zig b/src/base64/base64.zig index a5a94200f..8173767bc 100644 --- a/src/base64/base64.zig +++ b/src/base64/base64.zig @@ -49,8 +49,9 @@ pub fn decodeLenUpperBound(len: usize) usize { pub fn decodeLen(source: anytype) usize { return zig_base64.standard.Decoder.calcSizeForSlice(source) catch { - //fallback - return source.len / 4 * 3; + + //fallback; add 2 to allow for potentially missing padding + return source.len / 4 * 3 + 2; }; } diff --git a/test/bun.js/buffer.test.js b/test/bun.js/buffer.test.js index f8704d040..0dcf96816 100644 --- a/test/bun.js/buffer.test.js +++ b/test/bun.js/buffer.test.js @@ -2550,3 +2550,11 @@ it("should not perform out-of-bound access on invalid UTF-8 byte sequence", () = expect(str.length).toBe(6); expect(str).toBe("\uFFFD\x13\x12\x11\x10\x09"); }); + +it("repro #2063", () => { + const buf = Buffer.from("eyJlbWFpbCI6Ijg3MTg4NDYxN0BxcS5jb20iLCJpZCI6OCwicm9sZSI6Im5vcm1hbCIsImlhdCI6MTY3NjI4NDQyMSwiZXhwIjoxNjc2ODg5MjIxfQ", 'base64'); + expect(buf.length).toBe(85); + expect(buf[82]).toBe(50); + expect(buf[83]).toBe(49); + expect(buf[84]).toBe(125); +}); -- cgit v1.2.3