Skip to content

Commit

Permalink
unpack-trees: avoid array out-of-bounds error
Browse files Browse the repository at this point in the history
The loop in warn_conflicted_path() that checks for the count of
entries with the same path uses "i+count" for the array
entry. However, the loop only verifies that the value of count is
below the array size. Fix this by adding i to the condition.

I hit this condition during a test of the in-tree sparse-checkout
feature, so it is exercised by the end of the series.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
[jc: readability fix]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
derrickstolee authored and gitster committed May 8, 2020
1 parent 5644ca2 commit 0eeb3be
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions unpack-trees.c
Original file line number Diff line number Diff line change
Expand Up @@ -562,11 +562,11 @@ static int warn_conflicted_path(struct index_state *istate,

add_rejected_path(o, WARNING_SPARSE_UNMERGED_FILE, conflicting_path);

/* Find out how many higher stage entries at same path */
while (++count < istate->cache_nr &&
!strcmp(conflicting_path,
istate->cache[i+count]->name))
/* do nothing */;
/* Find out how many higher stage entries are at same path */
while ((++count) + i < istate->cache_nr &&
!strcmp(conflicting_path, istate->cache[count + i]->name))
; /* do nothing */

return count;
}

Expand Down

0 comments on commit 0eeb3be

Please sign in to comment.