Skip to content

Commit 4184cbd

Browse files
rybakgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Andrei Rybak <[email protected]> Acked-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 48bf2fa commit 4184cbd

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

mailinfo.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,8 @@ static int is_scissors_line(const char *line)
705705
perforation++;
706706
continue;
707707
}
708-
if ((!memcmp(c, ">8", 2) || !memcmp(c, "8<", 2) ||
709-
!memcmp(c, ">%", 2) || !memcmp(c, "%<", 2))) {
708+
if (starts_with(c, ">8") || starts_with(c, "8<") ||
709+
starts_with(c, ">%") || starts_with(c, "%<")) {
710710
in_perforation = 1;
711711
perforation += 2;
712712
scissors += 2;

0 commit comments

Comments
 (0)