提交 48e510b6 编写于 作者: J Jim Meyering 提交者: Junio C Hamano

diff: avoid stack-buffer-read-overrun for very long name

Due to the use of strncpy without explicit NUL termination,
we could end up passing names n1 or n2 that are not NUL-terminated
to queue_diff, which requires NUL-terminated strings.
Ensure that each is NUL terminated.
Signed-off-by: NJim Meyering <meyering@redhat.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 6eab5f2f
......@@ -109,6 +109,7 @@ static int queue_diff(struct diff_options *o,
n1 = buffer1;
strncpy(buffer1 + len1, p1.items[i1++].string,
PATH_MAX - len1);
buffer1[PATH_MAX-1] = 0;
}
if (comp < 0)
......@@ -117,6 +118,7 @@ static int queue_diff(struct diff_options *o,
n2 = buffer2;
strncpy(buffer2 + len2, p2.items[i2++].string,
PATH_MAX - len2);
buffer2[PATH_MAX-1] = 0;
}
ret = queue_diff(o, n1, n2);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册