Subject: Re: [PATCH 23/31] remote-curl: make hash size independent

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Tue, 12 Feb 2019 12:11:12 +0100

On Tue, Feb 12 2019, brian m. carlson wrote:

> Change one hard-coded use of the constant 40 to a reference to
> the_hash_algo.  In addition, switch a use of get_oid_hex to
> parse_oid_hex to avoid the need to use a constant.
>
> Signed-off-by: brian m. carlson <[email-masked]>
> ---
>  remote-curl.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/remote-curl.c b/remote-curl.c
> index bb7421023b..8395b71bbb 100644
> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -249,7 +249,7 @@ static struct ref *parse_info_refs(struct discovery *heads)
>  		if (data[i] == '\t')
>  			mid = &data[i];
>  		if (data[i] == '\n') {
> -			if (mid - start != 40)
> +			if (mid - start != the_hash_algo->hexsz)
>  				die("%sinfo/refs not valid: is this a git repository?",
>  				    url.buf);
>  			data[i] = 0;

Similar to my comment on 28/31 I may be missing something, but this is
the part where we're parsing the ref advertisement from a remote
repository, which may e.g. be SHA-1, and our local "the hash algo" may
be SHA-256, no?

So isn't this a point where we need to accept both, and parse it into
some structure where we mark it as either/or SHA-1 or SHA-256, and late
or consult SHA-1<->SHA-256 lookup tables etc.?