From 5633f6de6f8286b8ff79ed4a8d25ddadfd542e51 Mon Sep 17 00:00:00 2001 From: Shihao Date: Sat, 19 Sep 2026 10:45:48 -0400 Subject: [PATCH v1 2/3] Add tests for data after base64 padding Author: Shihao Zhong Discussion: https://postgr.es/m/19702-9ed4a131fcfadb9d@postgresql.org --- src/test/regress/expected/strings.out | 18 ++++++++++++++++++ src/test/regress/sql/strings.sql | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/test/regress/expected/strings.out b/src/test/regress/expected/strings.out index fa29abfd829..5cbcb40a267 100644 --- a/src/test/regress/expected/strings.out +++ b/src/test/regress/expected/strings.out @@ -2905,6 +2905,24 @@ SELECT decode(encode(('\x' || repeat('1234567890abcdef0001', 7))::bytea, \x1234567890abcdef00011234567890abcdef00011234567890abcdef00011234567890abcdef00011234567890abcdef00011234567890abcdef00011234567890abcdef0001 (1 row) +-- nothing but whitespace may follow base64 padding +SELECT decode(E'YQ=\n= \n', 'base64'); -- OK + decode +-------- + \x61 +(1 row) + +SELECT decode('YQ==Yg==', 'base64'); -- error +ERROR: invalid symbol "Y" found while decoding base64 sequence +SELECT decode('YQ==AAAA', 'base64'); -- error +ERROR: invalid symbol "A" found while decoding base64 sequence +SELECT decode('YQ=a', 'base64'); -- error +ERROR: invalid symbol "a" found while decoding base64 sequence +SELECT decode('YQ======', 'base64'); -- error +ERROR: unexpected "=" while decoding base64 sequence +SELECT decode('YQ=', 'base64url'); -- error +ERROR: invalid base64url end sequence +HINT: Input data is missing padding, is truncated, or is otherwise corrupted. SELECT encode('\x1234567890abcdef00', 'escape'); encode ----------------------------- diff --git a/src/test/regress/sql/strings.sql b/src/test/regress/sql/strings.sql index 7d9c7275a02..66e42c21700 100644 --- a/src/test/regress/sql/strings.sql +++ b/src/test/regress/sql/strings.sql @@ -986,6 +986,13 @@ SELECT decode('1234567890abcdef00', 'hex'); SELECT encode(('\x' || repeat('1234567890abcdef0001', 7))::bytea, 'base64'); SELECT decode(encode(('\x' || repeat('1234567890abcdef0001', 7))::bytea, 'base64'), 'base64'); +-- nothing but whitespace may follow base64 padding +SELECT decode(E'YQ=\n= \n', 'base64'); -- OK +SELECT decode('YQ==Yg==', 'base64'); -- error +SELECT decode('YQ==AAAA', 'base64'); -- error +SELECT decode('YQ=a', 'base64'); -- error +SELECT decode('YQ======', 'base64'); -- error +SELECT decode('YQ=', 'base64url'); -- error SELECT encode('\x1234567890abcdef00', 'escape'); SELECT decode(encode('\x1234567890abcdef00', 'escape'), 'escape'); -- 2.37.1 (Apple Git-137.1)