Junio C Hamano <gitster@xxxxxxxxx> writes: > We could do belt and suspenders by tightening the other callers to > only expect negative for errors (but then what should they do when > they receive non-zero positive? Should they BUG() out???) while > teaching sign_buffer_ssh() that our convention is to return negative > for an error, of course, but I am not sure if it that is worth it. Actually, we could loosen the caller(s) while tightening the callee(s), which is the more usual approach we would take in a situation like this. Here is what I am tempted to pile on top of the patch. ----- >8 --------- >8 --------- >8 --------- >8 --------- >8 ----- Subject: [PATCH] ssh signing: signal an error with a negative return value The other backend for the sign_buffer() function followed our usual "an error is signalled with a negative return" convention, but the SSH signer did not. Even though we already fixed the caller that assumed only a negative return value is an error, tighten the callee to signal an error with a negative return as well. This way, the callees will be strict on what they produce, while the callers will be lenient in what they accept. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- gpg-interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpg-interface.c b/gpg-interface.c index 48f43c5a21..e19a69c400 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -1088,7 +1088,7 @@ static int sign_buffer_ssh(struct strbuf *buffer, struct strbuf *signature, if (strstr(signer_stderr.buf, "usage:")) error(_("ssh-keygen -Y sign is needed for ssh signing (available in openssh version 8.2p1+)")); - error("%s", signer_stderr.buf); + ret = error("%s", signer_stderr.buf); goto out; } -- 2.43.0-561-g235986be82