Re: [PATCH v2] checkpatch: fix missing whitespace in formatted email
From: Dwaipayan Ray
Date: Tue Oct 13 2020 - 03:35:57 EST
On Tue, Oct 13, 2020 at 12:27 PM Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> On Tue, 2020-10-13 at 12:06 +0530, Dwaipayan Ray wrote:
> > Commit 0c01921e56f9 ("checkpatch: add new warnings to author signoff
> > checks.") introduced new checks for author sign off. The format_email
> > procedure was modified to add comment blocks to the formatted email. But
> > no space was added between the email address and mail comment.
> >
> > This causes wrong email formatting in cases where the email is in the form
> > "author@xxxxxxxxxxx (Comment block)". The space between the address and
> > comment block is removed, which causes incorrect parsing of the
> > formatted email.
> >
> > An evaluation on checkpatch brought up this case. For example,
> > on commit 1129d31b55d5 ("ima: Fix ima digest hash table key calculation"),
> > the following warning was reported:
> >
> > WARNING:BAD_SIGN_OFF: email address 'David.Laight@xxxxxxxxxx (big endian
> > system concerns)' might be better as 'David.Laight@xxxxxxxxxx(big endian
> > system concerns)'
>
> Strictly, a comment or multiple comments can exist
> in any part of an email
>
> "John (Jon) Smith (Smitty) <jsmith@xxxxxxxxxx> (tld is the best tld)
>
> > Add a single space in between the address and comment when the
> > extracted comment is not empty.
>
> So after the address is not necessarily the best
> location for a comment.
>
>
Yes I agree and in cases like that the check works perfectly.
But now consider the case when the name is empty:
Like:
jsmith@xxxxxxxxxx (tld is the best tld).
In this case when the formatted email is generated, we have
the following: "jsmith@xxxxxxxxxx(tld is the best tld)".
If this email is parsed again, the entire part is parsed as the email address,
which causes a mismatch later on.
It is for only this case that an extra white space is needed for the
parsing, probably because of how the comment is captured, for emails
with empty names:
$formatted_email =~ /(\S+\@\S+)(.*)$/
So it depends on the whitespace after address to demarcate the comment.
Some more examples of what I intend to solve:
'<stable@xxxxxxxxxxxxxxx> [5.3+]'
'<stable@xxxxxxxxxxxxxxx> # v5.7+'
'David.Laight@xxxxxxxxxx (big endian system concerns)'
Thanks,
Dwaipayan.