verify-commit: simplify parameters to run_gpg_verify()
authorJeff King <peff@peff.net>
Thu, 9 May 2019 21:32:29 +0000 (17:32 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 May 2019 05:22:54 +0000 (14:22 +0900)
commit837303700a73836930cfe1e870e5abb8c730e2fd
treebe41eb6c58a4fb3bd8b545ad082609dec06ff324
parentd713e88c401f2af054b7b653e83e2cd0795ef140
verify-commit: simplify parameters to run_gpg_verify()

The buf/len parameters of run_gpg_verify() have never been used since
the function was added in d07b00b7f3 (verify-commit: scriptable commit
signature verification, 2014-06-23). Instead, check_commit_signature()
accesses the commit struct directly.

Worse, we read the whole object just to check its type and do not attach
it to the "struct commit". Meaning we end up loading the object from
disk twice for no good reason.

And to further confuse matters, our type check is comes from what we
read from disk, but we later assume that lookup_commit() will return
non-NULL. This might not be true if some other object previously
referenced the same oid as a non-commit (though this may be impossible
to trigger in practice since we don't generally parse any other objects
in this command).

Instead, let's do our type check by loading the object via
parse_object(). That will attach the buffer to the struct so it can be
used later by check_commit_signature(). And it ensures that
lookup_commit() will return something sane.

And then we can just drop the unused "buf" and "len" parameters
entirely.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/verify-commit.c