On 20/07/12 09:18AM, Lukas Bulwahn wrote: > On Sun, Jul 12, 2020 at 7:18 AM Mrinal Pandey wrote: > > > On Sun, Jul 12, 2020 at 12:44 AM Lukas Bulwahn > > wrote: > > > >> > >> > >> On Sat, Jul 11, 2020 at 5:44 PM Mrinal Pandey > >> wrote: > >> > >>> The usage of "capture group (...)" in the immediate condition after `&&` > >>> results in `$1` being uninitialized. This eventually crashes the script. > >>> > >>> > >> It does not really crash it, right? It just emits a warning. > >> > > > > Sir, > > > > Yes. I will modify the line accordingly. > > > >> > >> > >>> Fix this by placing the capture group in the condition before `&&`. > >>> Thus, `$1` can be initialized to the text it matches thereby setting it > >>> to the desired and required value. > >>> > >>> > >> Maybe you can look when this bug was introduced? > >> > > > > The bug was first introduced with the commit `e518e9a59ec3` when the block > > was > > added to the script. It has been like that since then. > > Should I add this detail too in the commit message? > > > > Yes, please do. > > Commits are referred to with its hash shortened to 12 characters and the > commit message header in the following format: > > Commit e518e9a59ec3 ("checkpatch: emit an error when there's a diff in a > changelog") > > > Further note: > - can you also explain what the author intended to do? > - can you describe in one sentence how you discovered this bug? > - use checkpatch.pl on your own patch. > > Please rework the commit message and resend to this list, Shuah and me. > > I think if that patch is then okay, we have a quick look and then you can > send it out to the general list. > Sir, Please let me know if the commit message could be further improved or this is what you seek. I ran my patch through checkpatch and it says that the patch has no obvious style problems. I hope I wasn't supposed to include patch version history on this patch, please correct me if I am wrong. Thank you. > > Lukas > > > The usage of "capture group (...)" in the immediate condition after `&&` results in `$1` being uninitialized. This issues a warning "Use of uninitialized value $1 in regexp compilation at ./scripts/checkpatch.pl line 2638". I noticed this bug while running checkpatch on the set of commits from v5.7 to v5.8-rc1 of the kernel. The warning was thrown on the commits which had a diff content in their commit message. This bug was introduced in the script by Commit e518e9a59ec3 ("checkpatch: emit an error when there's a diff in a changelog"). It has been in the script since then. The author intended to store the match made by capture group in variable `$1`. This should have contained the name of the file as `[\w/]+` matched. However, this couldn't be accomplished due to usage of capture group and `$1` in the same RegEx. Fix this by placing the capture group in the condition before `&&`. Thus, `$1` can be initialized to the text which capture group matches thereby setting it to the desired and required value. Signed-off-by: Mrinal Pandey --- scripts/checkpatch.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 4c820607540b..e73e998d582a 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2636,8 +2636,8 @@ sub process { # Check if the commit log has what seems like a diff which can confuse patch if ($in_commit_log && !$commit_log_has_diff && - (($line =~ m@^\s+diff\b.*a/[\w/]+@ && - $line =~ m@^\s+diff\b.*a/([\w/]+)\s+b/$1\b@) || + (($line =~ m@^\s+diff\b.*a/([\w/]+)@ && + $line =~ m@^\s+diff\b.*a/[\w/]+\s+b/$1\b@) || $line =~ m@^\s*(?:\-\-\-\s+a/|\+\+\+\s+b/)@ || $line =~ m/^\s*\@\@ \-\d+,\d+ \+\d+,\d+ \@\@/)) { ERROR("DIFF_IN_COMMIT_MSG", -- 2.25.1