Merge branch 'jk/ref-filter-parsing-bugs'
Various tests exercising the transfer.credentialsInUrl configuration are taught to avoid making requests which require resolving localhost to reduce CI-flakiness. * jk/ref-filter-parsing-bugs: ref-filter: fix parsing of signatures with CRLF and no body ref-filter: fix parsing of signatures without blank lines
This commit is contained in:
commit
15df8418a5
@ -1375,12 +1375,12 @@ static void find_subpos(const char *buf,
|
||||
/* subject is first non-empty line */
|
||||
*sub = buf;
|
||||
/* subject goes to first empty line before signature begins */
|
||||
if ((eol = strstr(*sub, "\n\n"))) {
|
||||
if ((eol = strstr(*sub, "\n\n")) ||
|
||||
(eol = strstr(*sub, "\r\n\r\n"))) {
|
||||
eol = eol < sigstart ? eol : sigstart;
|
||||
/* check if message uses CRLF */
|
||||
} else if (! (eol = strstr(*sub, "\r\n\r\n"))) {
|
||||
} else {
|
||||
/* treat whole message as subject */
|
||||
eol = strrchr(*sub, '\0');
|
||||
eol = sigstart;
|
||||
}
|
||||
buf = eol;
|
||||
*sublen = buf - *sub;
|
||||
|
@ -1406,4 +1406,44 @@ test_expect_success 'for-each-ref reports broken tags' '
|
||||
refs/tags/broken-tag-*
|
||||
'
|
||||
|
||||
test_expect_success 'set up tag with signature and no blank lines' '
|
||||
git tag -F - fake-sig-no-blanks <<-\EOF
|
||||
this is the subject
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
not a real signature, but we just care about the
|
||||
subject/body parsing. It is important here that
|
||||
there are no blank lines in the signature.
|
||||
-----END PGP SIGNATURE-----
|
||||
EOF
|
||||
'
|
||||
|
||||
test_atom refs/tags/fake-sig-no-blanks contents:subject 'this is the subject'
|
||||
test_atom refs/tags/fake-sig-no-blanks contents:body ''
|
||||
test_atom refs/tags/fake-sig-no-blanks contents:signature "$sig"
|
||||
|
||||
test_expect_success 'set up tag with CRLF signature' '
|
||||
append_cr <<-\EOF |
|
||||
this is the subject
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
not a real signature, but we just care about
|
||||
the subject/body parsing. It is important here
|
||||
that there is a blank line separating this
|
||||
from the signature header.
|
||||
-----END PGP SIGNATURE-----
|
||||
EOF
|
||||
git tag -F - --cleanup=verbatim fake-sig-crlf
|
||||
'
|
||||
|
||||
test_atom refs/tags/fake-sig-crlf contents:subject 'this is the subject'
|
||||
test_atom refs/tags/fake-sig-crlf contents:body ''
|
||||
|
||||
# CRLF is retained in the signature, so we have to pass our expected value
|
||||
# through append_cr. But test_atom requires a shell string, which means command
|
||||
# substitution, and the shell will strip trailing newlines from the output of
|
||||
# the substitution. Hack around it by adding and then removing a dummy line.
|
||||
sig_crlf="$(printf "%s" "$sig" | append_cr; echo dummy)"
|
||||
sig_crlf=${sig_crlf%dummy}
|
||||
test_atom refs/tags/fake-sig-crlf contents:signature "$sig_crlf"
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user