Merge branch 'en/rerere-multi-stage-1-fix' into maint
A corner case bugfix in "git rerere" code. * en/rerere-multi-stage-1-fix: rerere: avoid buffer overrun t4200: demonstrate rerere segfault on specially crafted merge
This commit is contained in:
commit
b4eafbcdb8
2
rerere.c
2
rerere.c
@ -533,7 +533,7 @@ static int check_one_conflict(int i, int *type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
*type = PUNTED;
|
*type = PUNTED;
|
||||||
while (ce_stage(active_cache[i]) == 1)
|
while (i < active_nr && ce_stage(active_cache[i]) == 1)
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
/* Only handle regular files with both stages #2 and #3 */
|
/* Only handle regular files with both stages #2 and #3 */
|
||||||
|
@ -577,4 +577,33 @@ test_expect_success 'multiple identical conflicts' '
|
|||||||
count_pre_post 0 0
|
count_pre_post 0 0
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'setup simple stage 1 handling' '
|
||||||
|
test_create_repo stage_1_handling &&
|
||||||
|
(
|
||||||
|
cd stage_1_handling &&
|
||||||
|
|
||||||
|
test_seq 1 10 >original &&
|
||||||
|
git add original &&
|
||||||
|
git commit -m original &&
|
||||||
|
|
||||||
|
git checkout -b A master &&
|
||||||
|
git mv original A &&
|
||||||
|
git commit -m "rename to A" &&
|
||||||
|
|
||||||
|
git checkout -b B master &&
|
||||||
|
git mv original B &&
|
||||||
|
git commit -m "rename to B"
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'test simple stage 1 handling' '
|
||||||
|
(
|
||||||
|
cd stage_1_handling &&
|
||||||
|
|
||||||
|
git config rerere.enabled true &&
|
||||||
|
git checkout A^0 &&
|
||||||
|
test_must_fail git merge B^0
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user