From: Viktor Szakats Date: Tue, 30 Sep 2025 10:47:01 +0000 (+0200) Subject: checksrc: catch banned functions when preceded by `(` X-Git-Tag: rc-8_17_0-1~200 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=684f4cdd3ef0cc41c547fce0e45d8a059a3058b3;p=thirdparty%2Fcurl.git checksrc: catch banned functions when preceded by `(` Also add a test case. Closes #18779 --- diff --git a/scripts/checksrc.pl b/scripts/checksrc.pl index 23c9ef5301..5e8434d5fa 100755 --- a/scripts/checksrc.pl +++ b/scripts/checksrc.pl @@ -893,7 +893,8 @@ sub scanfile { # scan for use of banned functions my $bl = $l; again: - if(($l =~ /^(.*?\W)(\w+)(\s*\()/x) && $banfunc{$2}) { + if((($l =~ /^(.*?\W)(\w+)(\s*\()/x) && $banfunc{$2}) || + (($l =~ /^(.*?\()(\w+)(\s*\()/x) && $banfunc{$2})) { my $bad = $2; my $prefix = $1; my $suff = $3; @@ -904,6 +905,7 @@ sub scanfile { $prefix =~ s/\*/\\*/; $prefix =~ s/\[/\\[/; $prefix =~ s/\]/\\]/; + $prefix =~ s/\(/\\(/; $suff =~ s/\(/\\(/; $l =~ s/$prefix$bad$suff/$prefix$replace/; goto again; diff --git a/tests/data/test1185 b/tests/data/test1185 index 43a27f0870..14a23dc01a 100644 --- a/tests/data/test1185 +++ b/tests/data/test1185 @@ -74,6 +74,8 @@ void startfunc(int a, int b) { if(a) b++; + if(sprintf(buffer, "%s", moo)) {} + // CPP comment ? /* comment doesn't end @@ -192,7 +194,10 @@ void startfunc(int a, int b) { ./%LOGDIR/code1185.c:57:7: warning: conditional block on the same line (ONELINECONDITION) if(a) b++; ^ -./%LOGDIR/code1185.c:59:2: warning: // comment (CPPCOMMENTS) +./%LOGDIR/code1185.c:59:5: warning: use of sprintf is banned (BANNEDFUNC) + if(sprintf(buffer, "%s", moo)) {} + ^ +./%LOGDIR/code1185.c:61:2: warning: // comment (CPPCOMMENTS) // CPP comment ? ^ ./%LOGDIR/code1185.c:1:1: error: Missing copyright statement (COPYRIGHT) @@ -201,7 +206,7 @@ void startfunc(int a, int b) { ./%LOGDIR/code1185.c:1:1: error: Missing closing comment (OPENCOMMENT) ^ -checksrc: 0 errors and 39 warnings +checksrc: 0 errors and 40 warnings 5