apply: replace hard-coded constants
Replace several 40-based constants with references to GIT_MAX_HEXSZ or the_hash_algo, as appropriate. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
d8a3a69020
commit
93eb00f719
18
apply.c
18
apply.c
|
@ -223,8 +223,8 @@ struct patch {
|
||||||
struct fragment *fragments;
|
struct fragment *fragments;
|
||||||
char *result;
|
char *result;
|
||||||
size_t resultsize;
|
size_t resultsize;
|
||||||
char old_sha1_prefix[41];
|
char old_sha1_prefix[GIT_MAX_HEXSZ + 1];
|
||||||
char new_sha1_prefix[41];
|
char new_sha1_prefix[GIT_MAX_HEXSZ + 1];
|
||||||
struct patch *next;
|
struct patch *next;
|
||||||
|
|
||||||
/* three-way fallback result */
|
/* three-way fallback result */
|
||||||
|
@ -1093,9 +1093,10 @@ static int gitdiff_index(struct apply_state *state,
|
||||||
*/
|
*/
|
||||||
const char *ptr, *eol;
|
const char *ptr, *eol;
|
||||||
int len;
|
int len;
|
||||||
|
const unsigned hexsz = the_hash_algo->hexsz;
|
||||||
|
|
||||||
ptr = strchr(line, '.');
|
ptr = strchr(line, '.');
|
||||||
if (!ptr || ptr[1] != '.' || 40 < ptr - line)
|
if (!ptr || ptr[1] != '.' || hexsz < ptr - line)
|
||||||
return 0;
|
return 0;
|
||||||
len = ptr - line;
|
len = ptr - line;
|
||||||
memcpy(patch->old_sha1_prefix, line, len);
|
memcpy(patch->old_sha1_prefix, line, len);
|
||||||
|
@ -1109,7 +1110,7 @@ static int gitdiff_index(struct apply_state *state,
|
||||||
ptr = eol;
|
ptr = eol;
|
||||||
len = ptr - line;
|
len = ptr - line;
|
||||||
|
|
||||||
if (40 < len)
|
if (hexsz < len)
|
||||||
return 0;
|
return 0;
|
||||||
memcpy(patch->new_sha1_prefix, line, len);
|
memcpy(patch->new_sha1_prefix, line, len);
|
||||||
patch->new_sha1_prefix[len] = 0;
|
patch->new_sha1_prefix[len] = 0;
|
||||||
|
@ -3142,13 +3143,14 @@ static int apply_binary(struct apply_state *state,
|
||||||
{
|
{
|
||||||
const char *name = patch->old_name ? patch->old_name : patch->new_name;
|
const char *name = patch->old_name ? patch->old_name : patch->new_name;
|
||||||
struct object_id oid;
|
struct object_id oid;
|
||||||
|
const unsigned hexsz = the_hash_algo->hexsz;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For safety, we require patch index line to contain
|
* For safety, we require patch index line to contain
|
||||||
* full 40-byte textual SHA1 for old and new, at least for now.
|
* full hex textual object ID for old and new, at least for now.
|
||||||
*/
|
*/
|
||||||
if (strlen(patch->old_sha1_prefix) != 40 ||
|
if (strlen(patch->old_sha1_prefix) != hexsz ||
|
||||||
strlen(patch->new_sha1_prefix) != 40 ||
|
strlen(patch->new_sha1_prefix) != hexsz ||
|
||||||
get_oid_hex(patch->old_sha1_prefix, &oid) ||
|
get_oid_hex(patch->old_sha1_prefix, &oid) ||
|
||||||
get_oid_hex(patch->new_sha1_prefix, &oid))
|
get_oid_hex(patch->new_sha1_prefix, &oid))
|
||||||
return error(_("cannot apply binary patch to '%s' "
|
return error(_("cannot apply binary patch to '%s' "
|
||||||
|
@ -4055,7 +4057,7 @@ static int preimage_oid_in_gitlink_patch(struct patch *p, struct object_id *oid)
|
||||||
starts_with(++preimage, heading) &&
|
starts_with(++preimage, heading) &&
|
||||||
/* does it record full SHA-1? */
|
/* does it record full SHA-1? */
|
||||||
!get_oid_hex(preimage + sizeof(heading) - 1, oid) &&
|
!get_oid_hex(preimage + sizeof(heading) - 1, oid) &&
|
||||||
preimage[sizeof(heading) + GIT_SHA1_HEXSZ - 1] == '\n' &&
|
preimage[sizeof(heading) + the_hash_algo->hexsz - 1] == '\n' &&
|
||||||
/* does the abbreviated name on the index line agree with it? */
|
/* does the abbreviated name on the index line agree with it? */
|
||||||
starts_with(preimage + sizeof(heading) - 1, p->old_sha1_prefix))
|
starts_with(preimage + sizeof(heading) - 1, p->old_sha1_prefix))
|
||||||
return 0; /* it all looks fine */
|
return 0; /* it all looks fine */
|
||||||
|
|
Loading…
Reference in New Issue