cat-file: handle NULL object_context.path
commitcc0ea7c9e5c3d3bf9623415737b595c9d26b9b6d
authorJeff King <peff@peff.net>
Thu, 21 Sep 2017 06:21:40 +0000 (21 02:21 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Sep 2017 03:49:28 +0000 (22 12:49 +0900)
tree037577f7d315c4f7eb67614f4dcf91e32f38f333
parent30d005c02014680403b5d35ef274047ab91fa5bd
cat-file: handle NULL object_context.path

Commit dc944b65f1 (get_sha1_with_context: dynamically
allocate oc->path, 2017-05-19) changed the rules that
callers must follow for seeing if we parsed a path in the
object name. The rules switched from "check if the oc.path
buffer is empty" to "check if the oc.path pointer is NULL".
But that commit forgot to update some sites in
cat_one_file(), meaning we might dereference a NULL pointer.

You can see this by making a path-aware request like
--textconv without specifying --path, and giving an object
name that doesn't have a path in it. Like:

  git cat-file --textconv HEAD

which will reliably segfault.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/cat-file.c
t/t8010-cat-file-filters.sh