pgrep: some coverity fixes

procps_ns_get_id should be checked for < 0 not -1
strncpy should copy only to buflen-1 not buflen

References:
  Coverity 99117, 99108, 99107
This commit is contained in:
Craig Small 2016-04-27 22:50:25 +10:00
parent f6d6d305e7
commit ad13b4badb
2 changed files with 7 additions and 6 deletions

1
.gitignore vendored
View File

@ -20,6 +20,7 @@ config.rpath
config.status
config.sub
configure
cov-int
depcomp
free
INSTALL

12
pgrep.c
View File

@ -264,7 +264,7 @@ static struct el *read_pidfile(void)
if (n<1)
goto out;
pid = strtoul(buf+1,&endp,10);
if(endp<=buf+1 || pid<1 || pid>0x7fffffff)
if(endp<=buf+1 || pid<1 )
goto out;
if(*endp && !isspace(*endp))
goto out;
@ -359,7 +359,7 @@ static int conv_ns (const char *restrict name, struct el *restrict e)
ns_flags = 0;
id = procps_ns_get_id(name);
if (id == -1)
if (id < 0)
return 0;
ns_flags |= (1 << id);
@ -545,16 +545,16 @@ static struct el * select_procs (int *num)
if (opt_long || opt_longlong || (match && opt_pattern)) {
if (opt_longlong)
strncpy (cmdoutput, task_cmdline, CMDSTRSIZE);
strncpy (cmdoutput, task_cmdline, CMDSTRSIZE-1);
else
strncpy (cmdoutput, PIDS_GETSTR(CMD), CMDSTRSIZE);
strncpy (cmdoutput, PIDS_GETSTR(CMD), CMDSTRSIZE-1);
}
if (match && opt_pattern) {
if (opt_full)
strncpy (cmdsearch, task_cmdline, CMDSTRSIZE);
strncpy (cmdsearch, task_cmdline, CMDSTRSIZE-1);
else
strncpy (cmdsearch, PIDS_GETSTR(CMD), CMDSTRSIZE);
strncpy (cmdsearch, PIDS_GETSTR(CMD), CMDSTRSIZE-1);
if (regexec (preg, cmdsearch, 0, NULL, 0) != 0)
match = 0;