svn commit: r352953 - in head/usr.bin: killall split
Conrad Meyer
cem at freebsd.org
Wed Oct 2 07:02:56 UTC 2019
Hi Alexander,
Coverity has millions of spurious warnings of this class and they're
basically all false positives. I think we should instead try to
figure out how to disable this class of warning on our codebase, since
it is largely incorrect.
I would encourage reverting this change, because it uglies up the code
for no functional benefit. The code was correct before the change;
only Coverity was wrong.
Best,
Conrad
On Tue, Oct 1, 2019 at 11:15 PM Alexander Kabaev <kan at freebsd.org> wrote:
>
> Author: kan
> Date: Wed Oct 2 06:15:30 2019
> New Revision: 352953
> URL: https://svnweb.freebsd.org/changeset/base/352953
>
> Log:
> Convert pnmatch to single element array in regexec calls
>
> The regexec function is declared as taking an array of regmatch_t
> elements, and passing in the pointer to singleton element, while
> correct, triggers a Coverity warning. Convert the singleton into
> an array of one to silence the warning.
>
> Reported by: Coverity
> Coverity CID: 1009732, 1009733
> MFC after: 2 weeks
>
> Modified:
> head/usr.bin/killall/killall.c
> head/usr.bin/split/split.c
>
> Modified: head/usr.bin/killall/killall.c
> ==============================================================================
> --- head/usr.bin/killall/killall.c Wed Oct 2 02:37:34 2019 (r352952)
> +++ head/usr.bin/killall/killall.c Wed Oct 2 06:15:30 2019 (r352953)
> @@ -98,7 +98,7 @@ main(int ac, char **av)
> struct stat sb;
> struct passwd *pw;
> regex_t rgx;
> - regmatch_t pmatch;
> + regmatch_t pmatch[1];
> int i, j, ch;
> char buf[256];
> char first;
> @@ -361,9 +361,9 @@ main(int ac, char **av)
> }
> }
> if (mflag) {
> - pmatch.rm_so = 0;
> - pmatch.rm_eo = strlen(thiscmd);
> - if (regexec(&rgx, thiscmd, 0, &pmatch,
> + pmatch[0].rm_so = 0;
> + pmatch[0].rm_eo = strlen(thiscmd);
> + if (regexec(&rgx, thiscmd, 0, pmatch,
> REG_STARTEND) != 0)
> matched = 0;
> regfree(&rgx);
> @@ -387,9 +387,9 @@ main(int ac, char **av)
> }
> }
> if (mflag) {
> - pmatch.rm_so = 0;
> - pmatch.rm_eo = strlen(thiscmd);
> - if (regexec(&rgx, thiscmd, 0, &pmatch,
> + pmatch[0].rm_so = 0;
> + pmatch[0].rm_eo = strlen(thiscmd);
> + if (regexec(&rgx, thiscmd, 0, pmatch,
> REG_STARTEND) == 0)
> matched = 1;
> regfree(&rgx);
>
> Modified: head/usr.bin/split/split.c
> ==============================================================================
> --- head/usr.bin/split/split.c Wed Oct 2 02:37:34 2019 (r352952)
> +++ head/usr.bin/split/split.c Wed Oct 2 06:15:30 2019 (r352953)
> @@ -281,11 +281,11 @@ split2(void)
>
> /* Check if we need to start a new file */
> if (pflag) {
> - regmatch_t pmatch;
> + regmatch_t pmatch[1];
>
> - pmatch.rm_so = 0;
> - pmatch.rm_eo = len - 1;
> - if (regexec(&rgx, bfr, 0, &pmatch, REG_STARTEND) == 0)
> + pmatch[0].rm_so = 0;
> + pmatch[0].rm_eo = len - 1;
> + if (regexec(&rgx, bfr, 0, pmatch, REG_STARTEND) == 0)
> newfile();
> } else if (lcnt++ == numlines) {
> newfile();
More information about the svn-src-all
mailing list