Skip to content

Commit 51bbcda

Browse files
committed
Merge branch 'tg/range-diff-corner-case-fix'
Recently added "range-diff" had a corner-case bug to cause it segfault, which has been corrected. * tg/range-diff-corner-case-fix: linear-assignment: fix potential out of bounds memory access
2 parents cff90bd + e467a90 commit 51bbcda

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

linear-assignment.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ void compute_assignment(int column_count, int row_count, int *cost,
1919
int *free_row, free_count = 0, saved_free_count, *pred, *col;
2020
int i, j, phase;
2121

22+
if (column_count < 2) {
23+
memset(column2row, 0, sizeof(int) * column_count);
24+
memset(row2column, 0, sizeof(int) * row_count);
25+
return;
26+
}
27+
2228
memset(column2row, -1, sizeof(int) * column_count);
2329
memset(row2column, -1, sizeof(int) * row_count);
2430
ALLOC_ARRAY(v, column_count);

t/t3206-range-diff.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ test_expect_success 'changed commit' '
122122
test_cmp expected actual
123123
'
124124

125+
test_expect_success 'no commits on one side' '
126+
git commit --amend -m "new message" &&
127+
git range-diff master HEAD@{1} HEAD
128+
'
129+
125130
test_expect_success 'changed message' '
126131
git range-diff --no-color topic...changed-message >actual &&
127132
sed s/Z/\ /g >expected <<-EOF &&

0 commit comments

Comments
 (0)