Skip to content

Commit

Permalink
A small fix to pcregrep to avoid compiler warnings for -Wformat-overf…
Browse files Browse the repository at this point in the history
…low=2.

git-svn-id: svn:https://vcs.exim.org/pcre/code/trunk@1727 2f5784b3-3f2a-0410-8824-cb99058d5e15
  • Loading branch information
ph10 committed Feb 25, 2018
1 parent 8b5302a commit 25ba46b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
2 changes: 2 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ containing multi-code-unit characters caused bad behaviour and possibly a
crash. This issue was fixed for other kinds of repeat in release 8.37 by change
38, but repeating character classes were overlooked.

6. A small fix to pcregrep to avoid compiler warnings for -Wformat-overflow=2.


Version 8.41 05-July-2017
-------------------------
Expand Down
20 changes: 17 additions & 3 deletions pcregrep.c
Original file line number Diff line number Diff line change
Expand Up @@ -2527,7 +2527,14 @@ if ((popts & PO_FIXED_STRINGS) != 0)
}
}

sprintf(buffer, "%s%.*s%s", prefix[popts], patlen, ps, suffix[popts]);
if (snprintf(buffer, PATBUFSIZE, "%s%.*s%s", prefix[popts], patlen, ps,
suffix[popts]) > PATBUFSIZE)
{
fprintf(stderr, "pcregrep: Buffer overflow while compiling \"%s\"\n",
ps);
return FALSE;
}

p->compiled = pcre_compile(buffer, options, &error, &errptr, pcretables);
if (p->compiled != NULL) return TRUE;

Expand Down Expand Up @@ -2763,8 +2770,15 @@ for (i = 1; i < argc; i++)
int arglen = (argequals == NULL || equals == NULL)?
(int)strlen(arg) : (int)(argequals - arg);

sprintf(buff1, "%.*s", baselen, op->long_name);
sprintf(buff2, "%s%.*s", buff1, fulllen - baselen - 2, opbra + 1);
if (snprintf(buff1, sizeof(buff1), "%.*s", baselen, op->long_name) >
(int)sizeof(buff1) ||
snprintf(buff2, sizeof(buff2), "%s%.*s", buff1,
fulllen - baselen - 2, opbra + 1) > (int)sizeof(buff2))
{
fprintf(stderr, "pcregrep: Buffer overflow when parsing %s option\n",
op->long_name);
pcregrep_exit(2);
}

if (strncmp(arg, buff1, arglen) == 0 ||
strncmp(arg, buff2, arglen) == 0)
Expand Down

0 comments on commit 25ba46b

Please sign in to comment.