]> granicus.if.org Git - git/commitdiff
pkt-line: simplify starts_with checks in packet tracing
authorJeff King <peff@peff.net>
Fri, 12 Jun 2015 21:28:08 +0000 (17:28 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Jun 2015 20:25:50 +0000 (13:25 -0700)
We carefully check that our pkt buffer has enough characters
before seeing if it starts with "PACK". The intent is to
avoid reading random memory if we get a short buffer like
"PAC".

However, we know that the traced packets are always
NUL-terminated. They come from one of these sources:

  1. A string literal.

  2. `format_packet`, which uses a strbuf.

  3. `packet_read`, which defensively NUL-terminates what we
     read.

We can therefore drop the length checks, as we know we will
hit the trailing NUL if we have a short input.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pkt-line.c

index 187a2293e7d9a36ba294fe775efcf2b87f4e9233..0477d2eefec2c225812cf0e923f0997cbf7e209c 100644 (file)
@@ -24,8 +24,7 @@ static void packet_trace(const char *buf, unsigned int len, int write)
        strbuf_addf(&out, "packet: %12s%c ",
                    packet_trace_prefix, write ? '>' : '<');
 
-       if ((len >= 4 && starts_with(buf, "PACK")) ||
-           (len >= 5 && starts_with(buf+1, "PACK"))) {
+       if (starts_with(buf, "PACK") || starts_with(buf + 1, "PACK")) {
                strbuf_addstr(&out, "PACK ...");
                trace_disable(&trace_packet);
        }