1
0
mirror of https://github.com/git/git.git synced 2024-11-18 20:53:55 +01:00

Merge branch 'ds/find-unique-abbrev-optim'

While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.

* ds/find-unique-abbrev-optim:
  sha1_name: fix uninitialized memory errors
This commit is contained in:
Junio C Hamano 2018-03-08 12:36:26 -08:00
commit 7519a60ffa

@ -542,20 +542,20 @@ static void find_abbrev_len_for_pack(struct packed_git *p,
/*
* first is now the position in the packfile where we would insert
* mad->hash if it does not exist (or the position of mad->hash if
* it does exist). Hence, we consider a maximum of three objects
* it does exist). Hence, we consider a maximum of two objects
* nearby for the abbreviation length.
*/
mad->init_len = 0;
if (!match) {
nth_packed_object_oid(&oid, p, first);
extend_abbrev_len(&oid, mad);
if (nth_packed_object_oid(&oid, p, first))
extend_abbrev_len(&oid, mad);
} else if (first < num - 1) {
nth_packed_object_oid(&oid, p, first + 1);
extend_abbrev_len(&oid, mad);
if (nth_packed_object_oid(&oid, p, first + 1))
extend_abbrev_len(&oid, mad);
}
if (first > 0) {
nth_packed_object_oid(&oid, p, first - 1);
extend_abbrev_len(&oid, mad);
if (nth_packed_object_oid(&oid, p, first - 1))
extend_abbrev_len(&oid, mad);
}
mad->init_len = mad->cur_len;
}