From: Stefan Hajnoczi <stefanha@redhat.com>
To: "Denis V. Lunev" <den@virtuozzo.com>
Cc: "Denis V. Lunev" <den@openvz.org>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH 0/2] util/envlist: fix prefix-match in name lookup
Date: Mon, 1 Jun 2026 15:18:50 -0400 [thread overview]
Message-ID: <20260601191850.GB470697@fedora> (raw)
In-Reply-To: <266801b3-c127-422b-be48-d898a944deca@virtuozzo.com>
[-- Attachment #1: Type: text/plain, Size: 2195 bytes --]
On Thu, May 28, 2026 at 11:24:48AM +0200, Denis V. Lunev wrote:
> On 5/20/26 23:26, Denis V. Lunev wrote:
> > A bug report against our downstream tree turned out to have its root
> > cause in plain mainstream code: envlist_unsetenv() does a prefix-match
> > lookup that drops the wrong entry when one stored name happens to be a
> > prefix of another. The downstream symptom is specific to our setup and
> > isn't interesting here -- the underlying lookup mistake is the part
> > worth fixing, and it is reachable from a normal qemu-user invocation
> > through the -U command-line option, so the fix belongs upstream.
> >
> > Patch 1 fixes the lookup: each entry now stores its name length at
> > insertion time, and a tiny helper compares with explicit length
> > equality plus memcmp. envlist_setenv()'s self-search was accidentally
> > safe (it included the '=' byte in its strncmp window and that '='
> > served as a boundary) but is converted to the same helper so the name
> > boundary becomes a structural property of the entry rather than a
> > property of its byte layout. Without that, the two sites can easily
> > drift apart again.
> >
> > Patch 2 backfils test coverage for util/envlist -- there was none --
> > in tests/unit/test-envlist. I verified that the regression case
> > (envlist_unsetenv("FOO") vs. a stored "FOOBAR=...") fails against the
> > pre-fix code and passes after the fix.
> >
> > Signed-off-by: Denis V. Lunev <den@openvz.org>
> > Cc: Stefan Hajnoczi <stefanha@redhat.com>
> > Cc: Markus Armbruster <armbru@redhat.com>
> > Cc: Paolo Bonzini <pbonzini@redhat.com>
> >
> > Denis V. Lunev (2):
> > util/envlist: fix prefix-match in envlist_unsetenv() name lookup
> > tests/unit: add test-envlist covering setenv/unsetenv name matching
> >
> > tests/unit/meson.build | 1 +
> > tests/unit/test-envlist.c | 196 ++++++++++++++++++++++++++++++++++++++
> > util/envlist.c | 19 +++-
> > 3 files changed, 212 insertions(+), 4 deletions(-)
> > create mode 100644 tests/unit/test-envlist.c
> >
I will way until Wednesday to merge this so that the -user maintainers
have a chance to take a look:
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2026-06-01 19:19 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 21:26 [PATCH 0/2] util/envlist: fix prefix-match in name lookup Denis V. Lunev via qemu development
2026-05-20 21:26 ` [PATCH 1/2] util/envlist: fix prefix-match in envlist_unsetenv() " Denis V. Lunev via qemu development
2026-05-20 21:26 ` [PATCH 2/2] tests/unit: add test-envlist covering setenv/unsetenv name matching Denis V. Lunev via qemu development
2026-05-28 9:24 ` [PATCH 0/2] util/envlist: fix prefix-match in name lookup Denis V. Lunev
2026-06-01 19:12 ` Stefan Hajnoczi
2026-06-01 19:18 ` Stefan Hajnoczi [this message]
2026-06-03 16:51 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260601191850.GB470697@fedora \
--to=stefanha@redhat.com \
--cc=armbru@redhat.com \
--cc=den@openvz.org \
--cc=den@virtuozzo.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.