Browse Source

trailer: forbid leading whitespace in trailers

Currently, interpret-trailers allows leading whitespace in trailer
lines. This leads to false positives, especially for quoted lines or
bullet lists.

Forbid leading whitespace in trailers.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jonathan Tan 9 years ago committed by Junio C Hamano
parent
commit
c463a6b280
  1. 2
      Documentation/git-interpret-trailers.txt
  2. 15
      t/t7513-interpret-trailers.sh
  3. 2
      trailer.c

2
Documentation/git-interpret-trailers.txt

@ -55,7 +55,7 @@ The group must either be at the end of the message or be the last
non-whitespace lines before a line that starts with '---'. Such three non-whitespace lines before a line that starts with '---'. Such three
minus signs start the patch part of the message. minus signs start the patch part of the message.


When reading trailers, there can be whitespaces before and after the When reading trailers, there can be whitespaces after the
token, the separator and the value. There can also be whitespaces token, the separator and the value. There can also be whitespaces
inside the token and the value. inside the token and the value.



15
t/t7513-interpret-trailers.sh

@ -241,6 +241,21 @@ test_expect_success 'with non-trailer lines only' '
test_cmp expected actual test_cmp expected actual
' '


test_expect_success 'line with leading whitespace is not trailer' '
q_to_tab >patch <<-\EOF &&

Qtoken: value
EOF
q_to_tab >expected <<-\EOF &&

Qtoken: value

token: value
EOF
git interpret-trailers --trailer "token: value" patch >actual &&
test_cmp expected actual
'

test_expect_success 'with config setup' ' test_expect_success 'with config setup' '
git config trailer.ack.key "Acked-by: " && git config trailer.ack.key "Acked-by: " &&
cat >expected <<-\EOF && cat >expected <<-\EOF &&

2
trailer.c

@ -775,7 +775,7 @@ static int find_trailer_start(struct strbuf **lines, int count)
} }


separator_pos = find_separator(lines[start]->buf); separator_pos = find_separator(lines[start]->buf);
if (separator_pos >= 1) { if (separator_pos >= 1 && !isspace(lines[start]->buf[0])) {
struct list_head *pos; struct list_head *pos;


trailer_lines++; trailer_lines++;

Loading…
Cancel
Save