From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Gabriel Souza Franco <gabrielfrancosouza@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH] fetch-pack: fix object_id of exact sha1
Date: Mon, 29 Feb 2016 04:50:41 -0500 [thread overview]
Message-ID: <20160229095041.GA2950@sigill.intra.peff.net> (raw)
In-Reply-To: <xmqqh9gseiqk.fsf@gitster.mtv.corp.google.com>
On Sun, Feb 28, 2016 at 11:29:39AM -0800, Junio C Hamano wrote:
> Gabriel Souza Franco <gabrielfrancosouza@gmail.com> writes:
>
> >>> struct object_id oid;
> >>>
> >>> - if (!get_oid_hex(name, &oid) && name[GIT_SHA1_HEXSZ] == ' ')
> >>> - name += GIT_SHA1_HEXSZ + 1;
> >>> - else
> >>> + if (get_oid_hex(name, &oid))
> >>> oidclr(&oid);
> >>> + else if (name[GIT_SHA1_HEXSZ] == ' ')
> >>> + name += GIT_SHA1_HEXSZ + 1;
> >>
> >> This makes sense to me. I wonder if we should be more particular about
> >> the pure-sha1 case consuming the whole string, though. E.g., if we get:
> >>
> >> 1234567890123456789012345678901234567890-bananas
> >>
> >> that should probably not have sha1 1234...
> >>
> >> I don't think it should ever really happen in practice, but it might be
> >> worth noticing and complaining when name[GIT_SHA1_HEXSZ] is neither
> >> space nor '\0'.
> >
> > Right. What kind of complaining? Is doing oidclr(&oid) and letting it
> > fail elsewhere enough?
>
> I think that is the most sensible. After all, the first get-oid-hex
> expects to find a valid 40-hex object name at the beginning of line,
> and oidclr() is the way for it to signal a broken input, which is
> how the callers of this codepath expects errors to be caught.
Actually, I think we _don't_ want to signal an error here, but checking
for '\0' is still the right thing to do.
Once upon a time, fetch-pack took just the names of refs, like:
git fetch-pack $remote refs/heads/foo
and the same format was used for --stdin. Then in 58f2ed0 (remote-curl:
pass ref SHA-1 to fetch-pack as well, 2013-12-05), it learned to take
"$sha1 $ref". But if we didn't see a sha1, then we continued to treat it
as a refname.
This patch adds a new format, just "$sha1". So if get_oid_hex() succeeds
_and_ we see '\0', we know we have that case. But if we don't see '\0',
then we should assume it's a refname (e.g., "1234abcd...-bananas").
I think in practice it shouldn't matter much, as callers should be
feeding fully qualified refs (and we document this). However, we still
want to distinguish so that we give the correct error ("no such remote
ref 1234abcd...-bananas", not "whoops, the other side doesn't have
1234abcd").
-Peff
next prev parent reply other threads:[~2016-02-29 9:50 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-27 12:43 [PATCH] fetch-pack: fix unadvertised requests validation Gabriel Souza Franco
2016-02-27 18:25 ` Junio C Hamano
2016-02-27 18:32 ` Junio C Hamano
2016-02-27 18:38 ` Junio C Hamano
2016-02-27 19:07 ` Jeff King
2016-02-27 19:19 ` Jeff King
2016-02-27 20:28 ` Gabriel Souza Franco
2016-02-27 20:32 ` [PATCH] fetch-pack: fix object_id of exact sha1 Gabriel Souza Franco
2016-02-27 22:12 ` Jeff King
2016-02-27 22:23 ` Gabriel Souza Franco
2016-02-28 19:29 ` Junio C Hamano
2016-02-28 22:22 ` [PATCH v2] " Gabriel Souza Franco
2016-02-29 8:30 ` Johannes Schindelin
2016-02-29 10:00 ` Jeff King
2016-03-01 2:08 ` Gabriel Souza Franco
2016-03-01 2:12 ` [PATCH v3] " Gabriel Souza Franco
2016-03-01 4:54 ` Jeff King
2016-03-03 23:35 ` Gabriel Souza Franco
2016-03-04 0:50 ` Jeff King
2016-03-05 1:11 ` [PATCH v4] " Gabriel Souza Franco
2016-03-05 16:59 ` Jeff King
2016-03-05 18:54 ` Junio C Hamano
2016-03-05 19:34 ` [PATCH] fetch-pack: update the documentation for "<refs>..." arguments Gabriel Souza Franco
2016-03-05 19:35 ` Junio C Hamano
2016-03-01 4:40 ` [PATCH v2] fetch-pack: fix object_id of exact sha1 Jeff King
2016-02-29 9:50 ` Jeff King [this message]
2016-02-27 22:08 ` [PATCH] fetch-pack: fix unadvertised requests validation Jeff King
2016-02-28 19:14 ` Junio C Hamano
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=20160229095041.GA2950@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=gabrielfrancosouza@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).