Checkpatch did not handle cases where the author From: header was split into two lines. The author string went empty and checkpatch generated a false NO_AUTHOR_SIGN_OFF warning.
Support split From: headers in AUTHOR_SIGN_OFF check by adding an additional clause to resolve author identity in such cases. Signed-off-by: Dwaipayan Ray <[email protected]> --- scripts/checkpatch.pl | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 504d2e431c60..86975baead22 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1210,6 +1210,16 @@ sub reformat_email { return format_email($email_name, $email_address); } +sub format_author_email { + my ($email, $from) = @_; + + $email = encode("utf8", $email) if ($from =~ /=\?utf-8\?/i); + $email =~ s/"//g; + $email = reformat_email($email); + + return $email; +} + sub same_email_addresses { my ($email1, $email2) = @_; @@ -2347,6 +2357,7 @@ sub process { my $signoff = 0; my $author = ''; my $authorsignoff = 0; + my $prevheader = ''; my $is_patch = 0; my $is_binding_patch = -1; my $in_header_lines = $file ? 0 : 1; @@ -2658,12 +2669,21 @@ sub process { } } +# Check the patch for a split From: + if($prevheader ne '') { + if ($author eq '' && decode("MIME-Header", $prevheader) =~ /^From:\s*(.*)/) { + my $email = $1.$line; + $author = format_author_email($email, $prevheader); + } + $prevheader = ''; + } + # Check the patch for a From: if (decode("MIME-Header", $line) =~ /^From:\s*(.*)/) { - $author = $1; - $author = encode("utf8", $author) if ($line =~ /=\?utf-8\?/i); - $author =~ s/"//g; - $author = reformat_email($author); + $author = format_author_email($1, $line); + if($author eq '') { + $prevheader = $line; + } } # Check the patch for a signoff: -- 2.27.0

