1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-08 03:56:11 +02:00

mailinfo: use starts_with() when checking scissors

Existing checks for scissors characters using memcmp(3) never read past
the end of the line, because all substrings we are interested in are two
characters long, and the outer loop guarantees we have at least one
character.  So at most we will look at the NUL.

However, this is too subtle and may lead to bugs in code which copies
this behavior without realizing substring length requirement.  So use
starts_with() instead, which will stop at NUL regardless of the length
of the prefix.  Remove extra pair of parentheses while we are here.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Andrei Rybak 2021-06-08 22:48:41 +02:00 committed by Junio C Hamano
parent 48bf2fa8ba
commit 4184cbd635

View File

@ -705,8 +705,8 @@ static int is_scissors_line(const char *line)
perforation++;
continue;
}
if ((!memcmp(c, ">8", 2) || !memcmp(c, "8<", 2) ||
!memcmp(c, ">%", 2) || !memcmp(c, "%<", 2))) {
if (starts_with(c, ">8") || starts_with(c, "8<") ||
starts_with(c, ">%") || starts_with(c, "%<")) {
in_perforation = 1;
perforation += 2;
scissors += 2;