Skip to content

Commit 4a5804c

Browse files
committed
smart_pkt: honor line length when determining packet type
When we parse the packet type of an incoming packet line, we do not verify that we don't overflow the provided line buffer. Fix this by using `git__prefixncmp` instead and passing in `len`. As we have previously already verified that `len <= linelen`, we thus won't ever overflow the provided buffer length.
1 parent 365d272 commit 4a5804c

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/transports/smart_pkt.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -459,19 +459,19 @@ int git_pkt_parse_line(
459459
ret = sideband_progress_pkt(head, line, len);
460460
else if (*line == GIT_SIDE_BAND_ERROR)
461461
ret = sideband_error_pkt(head, line, len);
462-
else if (!git__prefixcmp(line, "ACK"))
462+
else if (!git__prefixncmp(line, len, "ACK"))
463463
ret = ack_pkt(head, line, len);
464-
else if (!git__prefixcmp(line, "NAK"))
464+
else if (!git__prefixncmp(line, len, "NAK"))
465465
ret = nak_pkt(head);
466-
else if (!git__prefixcmp(line, "ERR "))
466+
else if (!git__prefixncmp(line, len, "ERR "))
467467
ret = err_pkt(head, line, len);
468468
else if (*line == '#')
469469
ret = comment_pkt(head, line, len);
470-
else if (!git__prefixcmp(line, "ok"))
470+
else if (!git__prefixncmp(line, len, "ok"))
471471
ret = ok_pkt(head, line, len);
472-
else if (!git__prefixcmp(line, "ng"))
472+
else if (!git__prefixncmp(line, len, "ng"))
473473
ret = ng_pkt(head, line, len);
474-
else if (!git__prefixcmp(line, "unpack"))
474+
else if (!git__prefixncmp(line, len, "unpack"))
475475
ret = unpack_pkt(head, line, len);
476476
else
477477
ret = ref_pkt(head, line, len);

0 commit comments

Comments
 (0)