Re: [PATCH 21/41] http: eliminate hard-coded constants
On Wed, Apr 25, 2018 at 08:44:19AM +0900, Junio C Hamano wrote: > Martin Ågrenwrites: > > >> switch (data[i]) { > >> case 'P': > >> i++; > >> - if (i + 52 <= buf.len && > >> + if (i + hexsz + 12 <= buf.len && > >> starts_with(data + i, " pack-") && > >> - starts_with(data + i + 46, ".pack\n")) { > >> - get_sha1_hex(data + i + 6, sha1); > >> - fetch_and_setup_pack_index(packs_head, > >> sha1, > >> + starts_with(data + i + hexsz + 6, ".pack\n")) { > >> + get_sha1_hex(data + i + 6, hash); > >> + fetch_and_setup_pack_index(packs_head, > >> hash, > >> base_url); > >> i += 51; > > > > s/51/hexsz + 11/ ? > > Quite right. Good point. Will fix. -- brian m. carlson: Houston, Texas, US OpenPGP: https://keybase.io/bk2204 signature.asc Description: PGP signature
Re: [PATCH 21/41] http: eliminate hard-coded constants
Martin Ågrenwrites: >> switch (data[i]) { >> case 'P': >> i++; >> - if (i + 52 <= buf.len && >> + if (i + hexsz + 12 <= buf.len && >> starts_with(data + i, " pack-") && >> - starts_with(data + i + 46, ".pack\n")) { >> - get_sha1_hex(data + i + 6, sha1); >> - fetch_and_setup_pack_index(packs_head, sha1, >> + starts_with(data + i + hexsz + 6, ".pack\n")) { >> + get_sha1_hex(data + i + 6, hash); >> + fetch_and_setup_pack_index(packs_head, hash, >> base_url); >> i += 51; > > s/51/hexsz + 11/ ? Quite right.
Re: [PATCH 21/41] http: eliminate hard-coded constants
On 24 April 2018 at 01:39, brian m. carlsonwrote: > Use the_hash_algo to find the right size for parsing pack names. > > Signed-off-by: brian m. carlson > --- > http.c | 11 ++- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/http.c b/http.c > index 3034d10b68..ec70676748 100644 > --- a/http.c > +++ b/http.c > @@ -2047,7 +2047,8 @@ int http_get_info_packs(const char *base_url, struct > packed_git **packs_head) > int ret = 0, i = 0; > char *url, *data; > struct strbuf buf = STRBUF_INIT; > - unsigned char sha1[20]; > + unsigned char hash[GIT_MAX_RAWSZ]; > + const unsigned hexsz = the_hash_algo->hexsz; > > end_url_with_slash(, base_url); > strbuf_addstr(, "objects/info/packs"); > @@ -2063,11 +2064,11 @@ int http_get_info_packs(const char *base_url, struct > packed_git **packs_head) > switch (data[i]) { > case 'P': > i++; > - if (i + 52 <= buf.len && > + if (i + hexsz + 12 <= buf.len && > starts_with(data + i, " pack-") && > - starts_with(data + i + 46, ".pack\n")) { > - get_sha1_hex(data + i + 6, sha1); > - fetch_and_setup_pack_index(packs_head, sha1, > + starts_with(data + i + hexsz + 6, ".pack\n")) { > + get_sha1_hex(data + i + 6, hash); > + fetch_and_setup_pack_index(packs_head, hash, > base_url); > i += 51; s/51/hexsz + 11/ ?
[PATCH 21/41] http: eliminate hard-coded constants
Use the_hash_algo to find the right size for parsing pack names. Signed-off-by: brian m. carlson--- http.c | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/http.c b/http.c index 3034d10b68..ec70676748 100644 --- a/http.c +++ b/http.c @@ -2047,7 +2047,8 @@ int http_get_info_packs(const char *base_url, struct packed_git **packs_head) int ret = 0, i = 0; char *url, *data; struct strbuf buf = STRBUF_INIT; - unsigned char sha1[20]; + unsigned char hash[GIT_MAX_RAWSZ]; + const unsigned hexsz = the_hash_algo->hexsz; end_url_with_slash(, base_url); strbuf_addstr(, "objects/info/packs"); @@ -2063,11 +2064,11 @@ int http_get_info_packs(const char *base_url, struct packed_git **packs_head) switch (data[i]) { case 'P': i++; - if (i + 52 <= buf.len && + if (i + hexsz + 12 <= buf.len && starts_with(data + i, " pack-") && - starts_with(data + i + 46, ".pack\n")) { - get_sha1_hex(data + i + 6, sha1); - fetch_and_setup_pack_index(packs_head, sha1, + starts_with(data + i + hexsz + 6, ".pack\n")) { + get_sha1_hex(data + i + 6, hash); + fetch_and_setup_pack_index(packs_head, hash, base_url); i += 51; break;