diff options
| author | Jiang Xin <worldhello.net@gmail.com> | 2021-11-04 08:34:15 +0800 |
|---|---|---|
| committer | Jiang Xin <worldhello.net@gmail.com> | 2021-11-04 08:34:15 +0800 |
| commit | bbf1932c3085706a6a3bc8d7ba79e007ad7bda15 (patch) | |
| tree | 4e14e8282070a6ee6d274343a44b78f8f7c112c8 /gpg-interface.c | |
| parent | 66e6babac6c3698cdcb8944307a0d5ac21562ab0 (diff) | |
| parent | 876b1423317071f43c99666f3fc3db3642dfbe14 (diff) | |
| download | git-bbf1932c3085706a6a3bc8d7ba79e007ad7bda15.tar.gz | |
Merge branch 'master' of github.com:git/git
* 'master' of github.com:git/git:
Git 2.34-rc1
rebase -i: fix rewording with --committer-date-is-author-date
dir: fix directory-matching bug
gpg-interface: avoid buffer overrun in parse_ssh_output()
gpg-interface: handle missing " with " gracefully in parse_ssh_output()
A few more topics before -rc1
i18n: fix typos found during l10n for git 2.34.0
t5310: drop lib-bundle.sh include
format-patch (doc): clarify --base=auto
gc: perform incremental repack when implictly enabled
fsck: verify multi-pack-index when implictly enabled
fsck: verify commit graph when implicitly enabled
grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data
commit-graph: don't consider "replace" objects with "verify"
commit-graph tests: fix another graph_git_two_modes() helper
commit-graph tests: fix error-hiding graph_git_two_modes() helper
pretty: colorize pattern matches in commit messages
grep: refactor next_match() and match_one_pattern() for external use
Diffstat (limited to 'gpg-interface.c')
| -rw-r--r-- | gpg-interface.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gpg-interface.c b/gpg-interface.c index 800d8caa67..3e7255a2a9 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -387,10 +387,6 @@ static void parse_ssh_output(struct signature_check *sigc) line = to_free = xmemdupz(sigc->output, strcspn(sigc->output, "\n")); if (skip_prefix(line, "Good \"git\" signature for ", &line)) { - /* Valid signature and known principal */ - sigc->result = 'G'; - sigc->trust_level = TRUST_FULLY; - /* Search for the last "with" to get the full principal */ principal = line; do { @@ -398,6 +394,12 @@ static void parse_ssh_output(struct signature_check *sigc) if (search) line = search + 1; } while (search != NULL); + if (line == principal) + goto cleanup; + + /* Valid signature and known principal */ + sigc->result = 'G'; + sigc->trust_level = TRUST_FULLY; sigc->signer = xmemdupz(principal, line - principal - 1); } else if (skip_prefix(line, "Good \"git\" signature with ", &line)) { /* Valid signature, but key unknown */ @@ -407,9 +409,9 @@ static void parse_ssh_output(struct signature_check *sigc) goto cleanup; } - key = strstr(line, "key"); + key = strstr(line, "key "); if (key) { - sigc->fingerprint = xstrdup(strstr(line, "key") + 4); + sigc->fingerprint = xstrdup(strstr(line, "key ") + 4); sigc->key = xstrdup(sigc->fingerprint); } else { /* @@ -775,7 +777,7 @@ static const char *get_default_ssh_signing_key(void) if (keys[0] && starts_with(keys[0]->buf, "ssh-")) { default_key = strbuf_detach(keys[0], NULL); } else { - warning(_("gpg.ssh.defaultKeycommand succeeded but returned no keys: %s %s"), + warning(_("gpg.ssh.defaultKeyCommand succeeded but returned no keys: %s %s"), key_stderr.buf, key_stdout.buf); } |
