aboutsummaryrefslogtreecommitdiff
path: root/linear-assignment.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-09-24 10:30:53 -0700
committerJunio C Hamano <gitster@pobox.com>2018-09-24 10:30:53 -0700
commit51bbcda1c7f44f42055a032ed394dedeca6df954 (patch)
tree5771827b4a398e407e2038b56dbaeb4c9e7ffdfe /linear-assignment.c
parentcff90bdc5c8c8c0b0e3b8a1f32f220f0aba7af55 (diff)
parente467a90c7a82a047629aafa4e97daefa3872ec35 (diff)
downloadgit-51bbcda1c7f44f42055a032ed394dedeca6df954.tar.xz
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
Diffstat (limited to 'linear-assignment.c')
-rw-r--r--linear-assignment.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/linear-assignment.c b/linear-assignment.c
index 9b3e56e283..ecffc09be6 100644
--- a/linear-assignment.c
+++ b/linear-assignment.c
@@ -19,6 +19,12 @@ void compute_assignment(int column_count, int row_count, int *cost,
int *free_row, free_count = 0, saved_free_count, *pred, *col;
int i, j, phase;
+ if (column_count < 2) {
+ memset(column2row, 0, sizeof(int) * column_count);
+ memset(row2column, 0, sizeof(int) * row_count);
+ return;
+ }
+
memset(column2row, -1, sizeof(int) * column_count);
memset(row2column, -1, sizeof(int) * row_count);
ALLOC_ARRAY(v, column_count);