Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH 1/3: Fix buffer overflow and wrong behavior in url_encode
- X-seq: zsh-workers 54498
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: Philippe Altherr <philippe.altherr@xxxxxxxxx>
- Cc: zsh-workers@xxxxxxx
- Subject: Re: PATCH 1/3: Fix buffer overflow and wrong behavior in url_encode
- Date: Thu, 7 May 2026 11:41:41 +0200
- Arc-authentication-results: i=1; mx.google.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=6bXEW/poHvJtdZo0a2g2TBIIaIFvvgyGb08dqQ63htM=; fh=/bXHssrLkS3v1NoIbCPSz9F+lJGq0vDETCppAl3b/24=; b=GmZN2HZl6xM2GBM6RIgLEdS5bdw4VjUb2sgouF4dBmxQA+ggxu6OgLlbYfTEY+vy4J fix1CvESjGx7CCx3VMQ77vF0wvwekU7p7LYJkY8OgLs75ZAxpHUk5W6yGaxtQHQvOSFG IKds4VyK9P4AmM6m2trnSBK0NxcRKac7XKcNYb3zT3ihTWU2Tc77qrjpyL7Fnz1GqAZG 0RQCVISbbhqtrUxRxwqy0UR3GQneb77Z+jGdUP9x4TUOUiek1BFW5UNZqJprZNsq10PU CcdAlgZXjJruwh5n+fPmYE3q5391LFm3L6QuqMAexXJ94b5CrbODBoiaRQrKsh/oi1Fw zf3g==; darn=zsh.org
- Arc-seal: i=1; a=rsa-sha256; t=1778146915; cv=none; d=google.com; s=arc-20240605; b=e/ZJnFY3TY+FosSGnoBMWDdaMCrePA3n/ejA4alO0Q7pBqNJ1GvPeTnrFUUqPBQZj8 ZbZoCNV6dIg17aVVLuCJp5Z6DOsh5F+yP6p6kyxsqy8LON6BLhP5/M3Bmlgbae/3vyCe Tx3FKZYRGWa29RvbQJvpK8efij83cIBBPHvl6BzZnuPCBhjOdoqDmjYmpw5lPLUTpaLr Jyym7N3W031TfzLfE9doHGBEZ5SUsh37uFYxWdNFlXnftiN3TjJ/oVJH3STkmyADhAzH iPwpibKmU1GuDpo5WRsOeqQrgFJ/E6lLinXwHW2p0M9aSBScQaodnXbG52V6Mcw7R0Vx i40w==
- Archived-at: <https://zsh.org/workers/54498>
- In-reply-to: <CAGdYchu_q0Y+_+ijt=OSkkRJCFO4kU1Q7q2svzZyGv=tSUcPcQ@mail.gmail.com>
- List-id: <zsh-workers.zsh.org>
- References: <20260507035927.29370-1-mikachu@gmail.com> <CAGdYchu_q0Y+_+ijt=OSkkRJCFO4kU1Q7q2svzZyGv=tSUcPcQ@mail.gmail.com>
On Thu, May 7, 2026 at 11:35 AM Philippe Altherr
<philippe.altherr@xxxxxxxxx> wrote:
>
> "const unsigned char *in" looks very weird to me. Wouldn't it be possible to cast "*in" in the call to sprintf:
>
> out += sprintf(out, "%%%02X", (unsigned char)*in);
>
> or maybe
>
> out += sprintf(out, "%%%02X", *in & 0xFF);
It is indeed another possibility, which is why I asked. But if we do
that, we'd also need to cast it for the isalnum() call. However, and I
didn't notice this before, base64_encode already looks like this
(surely mangled by gmail):
static char*
base64_encode(const char *src, size_t len) {
static const char* base64_table =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const unsigned char *end = (unsigned char *)src + len;
const unsigned char *in = (unsigned char *)src;
So I think I'll just use that pattern. (I wasn't sure if the cast
needed a const too, guess not).
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author