diff options
author | Jon Simons <jon@jonsimons.org> | 2018-02-08 21:47:50 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-02-08 23:37:40 +0300 |
commit | bb1356dc643e1488ccc1924ab674f6cbbe615f74 (patch) | |
tree | 88bf6c08ac171e299567bd53df1f2820d577c691 /remote-curl.c | |
parent | bc9d4dc5b07c05c7b26a4e781b7538db7c775fc3 (diff) |
always check for NULL return from packet_read_line()
The packet_read_line() function will die if it sees any
protocol or socket errors. But it will return NULL for a
flush packet; some callers which are not expecting this may
dereference NULL if they get an unexpected flush. This would
involve the other side breaking protocol, but we should
flag the error rather than segfault.
Signed-off-by: Jon Simons <jon@jonsimons.org>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'remote-curl.c')
-rw-r--r-- | remote-curl.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/remote-curl.c b/remote-curl.c index 0053b09549..9903077471 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -339,6 +339,8 @@ static struct discovery *discover_refs(const char *service, int for_push) * pkt-line matches our request. */ line = packet_read_line_buf(&last->buf, &last->len, NULL); + if (!line) + die("invalid server response; expected service, got flush packet"); strbuf_reset(&exp); strbuf_addf(&exp, "# service=%s", service); |