From: Taylor Blau <me@ttaylorr.com>
To: Jeff King <peff@peff.net>
Cc: Piotr Szlazak <piotr.szlazak@gmail.com>,
Piotr Szlazak via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org, Christian Couder <chriscool@tuxfamily.org>,
David Turner <dturner@twosigma.com>
Subject: Re: [PATCH] upload-pack: fix how ALLOW_ANY_SHA1 flag is disabled
Date: Fri, 18 Oct 2024 17:46:00 -0400 [thread overview]
Message-ID: <ZxLXGG8+VUWydsle@nand.local> (raw)
In-Reply-To: <20241018043306.GB2408674@coredump.intra.peff.net>
On Fri, Oct 18, 2024 at 12:33:06AM -0400, Jeff King wrote:
> On Thu, Oct 17, 2024 at 02:46:45PM -0400, Taylor Blau wrote:
>
> > > Rather not as config file is parsed only once:
> > >
> > > https://github.com/git/git/blob/15030f9556f545b167b1879b877a5d780252dc16/upload-pack.c#L1368
> >
> > I am not sure I follow... upload_pack_config() is invoked on every
> > configuration line that we see. So the first time when we read
> > "allowAnySHA1InWant = true", we take the first path through that
> > function you linked. The second time, we take the else branch, and
> > correspondingly unset the bits from ALLOW_ANY_SHA1.
> >
> > So today that is doing the right thing (it will end with the same bits
> > set that we started with). But under the proposed patch that behavior
> > would change, and the lower two bits would still be set.
>
> Reading Piotr's response I wondered if upload-pack might be using the
> configset API instead of a config callback. But no, it does look like a
> config callback.
Yeah... I was pretty sure that was the case thinking back to 6dd3456a8c
(upload-pack.c: allow banning certain object filter(s), 2020-08-03),
which somehow was already more than four years ago :-<.
> But it does hint at a possible path if we wanted to process these
> independently: we could read each of the config options separately,
> resolving them in the usual last-one-wins way, and then turning the
> result into a bitfield. Something like this, outside of the callback
> (totally untested):
>
> int v;
> unsigned bits = 0;
>
> if (!git_config_get_bool("uploadpack.allowtipsha1inwant", &v) && v)
> bits |= ALLOW_TIP_SHA1;
> if (!git_config_get_bool("uploadpack.allowreachablesha1inwant", &v) && v)
> bits |= ALLOW_REACHABLE_SHA1;
> if (!git_config_get_bool("uploadpack.allowanysha1inwant", &v) && v)
> bits |= ALLOW_ANY_SHA1;
>
> That makes the config flags independent. But the features themselves are
> not really independent. If you do:
>
> [uploadpack]
> allowAnySHA1InWant = true
> allowTipSHA1InWant = false
>
> it is still going to allow the "tip" flag, because it's a subset of the
> "any" flag. And you can't escape that.
Yup.
> So I still think we're better off to just document (and of course in the
> long run all of these become less and less interesting as they are
> v0-only options).
I agree completely. I think the consensus here seems to be that, if
anything, we should update the documentation and move on :-).
Thanks,
Taylor
next prev parent reply other threads:[~2024-10-18 21:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 21:06 [PATCH] upload-pack: fix how ALLOW_ANY_SHA1 flag is disabled Piotr Szlazak via GitGitGadget
2024-10-16 21:18 ` Taylor Blau
2024-10-17 2:37 ` Jeff King
2024-10-17 15:23 ` Taylor Blau
2024-10-17 15:59 ` Piotr Szlazak
2024-10-17 18:46 ` Taylor Blau
2024-10-18 4:33 ` Jeff King
2024-10-18 21:46 ` Taylor Blau [this message]
2024-10-19 16:39 ` [PATCH v2] doc: document how uploadpack.allowAnySHA1InWant impact other allow options Piotr Szlazak via GitGitGadget
2024-10-19 16:46 ` Piotr Szlazak
2024-10-21 5:55 ` Piotr Szlazak
2024-10-21 19:03 ` Jeff King
2024-10-21 19:47 ` Taylor Blau
2024-10-21 19:48 ` Taylor Blau
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=ZxLXGG8+VUWydsle@nand.local \
--to=me@ttaylorr.com \
--cc=chriscool@tuxfamily.org \
--cc=dturner@twosigma.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=peff@peff.net \
--cc=piotr.szlazak@gmail.com \
/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.