Re: encode/decode support for base64url

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: Daniel Gustafsson <daniel(at)yesql(dot)se>
Cc: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Florents Tselai <florents(dot)tselai(at)gmail(dot)com>, "David E(dot) Wheeler" <david(at)justatheory(dot)com>, Aleksander Alekseev <aleksander(at)tigerdata(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Cary Huang <cary(dot)huang(at)highgo(dot)ca>, Przemysław Sztoch <przemyslaw(at)sztoch(dot)pl>
Subject: Re: encode/decode support for base64url
Date: 2025-09-19 03:50:00
Message-ID: 89CEBB16-E4B6-498C-8036-39B5086286BA@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I reviewed and tested this patch. Overall looks good to me. Actually, I think this patched fixed a bug of current implementation of base64 encoding by moving the logic of handling newline into “if (pos<0)”.

Just a few small comments:

> On Sep 19, 2025, at 03:19, Daniel Gustafsson <daniel(at)yesql(dot)se> wrote:
>
> <v9-0001-Add-support-for-base64url-encoding-and-decoding.patch>

1.
```
+ * Helper for decoding base64 or base64url. When url is passed as true the
+ * input will be encoded using base64url. len bytes in src is encoded into
+ * dst.
+ */
```

It’s not common to use two white-spaces after “.”, usually we need only one.

2.
```
+ /* handle remainder */
if (pos != 2)
```

The comment is understandable, but slightly vague: remainder of what?

Maybe rephrase to “handle remaining bytes in buf”.

3.
```
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("unexpected \"=\" while decoding base64 sequence")));
+ errmsg("unexpected \"=\" while decoding %s sequence", url ? "base64url" : "base64")));
```

This is a normal usage that injects sub-strings based on condition. However, PG doesn’t like that, see here: https://www.postgresql.org/docs/devel/nls-programmer.html#NLS-GUIDELINES

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Chao Li 2025-09-19 03:56:57 Re: Optimize multiplications/divisions by 2 using bit shifts in hot paths
Previous Message Tom Lane 2025-09-19 03:43:34 Re: Reword messages using "as" instead of "because"