sysctl: fix potential null derefence [smatch scan]
sysctl.c:560 PreloadSystem(29) error: potential null derefence 'cfgs'. Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
parent
8cd53e16b5
commit
1689e769e6
36
sysctl.c
36
sysctl.c
@ -557,7 +557,7 @@ static int PreloadSystem(void)
|
|||||||
continue;
|
continue;
|
||||||
/* check if config already known */
|
/* check if config already known */
|
||||||
for (i = 0; i < ncfgs; ++i) {
|
for (i = 0; i < ncfgs; ++i) {
|
||||||
if (!strcmp(cfgs[i]->name, de->d_name))
|
if (cfgs && !strcmp(cfgs[i]->name, de->d_name))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i < ncfgs)
|
if (i < ncfgs)
|
||||||
@ -565,22 +565,32 @@ static int PreloadSystem(void)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ncfgs % nprealloc == 0)
|
if (ncfgs % nprealloc == 0)
|
||||||
cfgs = xrealloc(cfgs, sizeof(struct pair *) * (ncfgs + nprealloc));
|
cfgs =
|
||||||
cfgs[ncfgs] =
|
xrealloc(cfgs,
|
||||||
xmalloc(sizeof(struct pair) + strlen(de->d_name) * 2 + 2 +
|
sizeof(struct pair *) * (ncfgs +
|
||||||
strlen(dirs[di]) + 1);
|
nprealloc));
|
||||||
cfgs[ncfgs]->name = (char *) cfgs[ncfgs] + sizeof(struct pair);
|
|
||||||
strcpy(cfgs[ncfgs]->name, de->d_name);
|
if (cfgs) {
|
||||||
cfgs[ncfgs]->value =
|
cfgs[ncfgs] =
|
||||||
(char *) cfgs[ncfgs] + sizeof(struct pair) + strlen(cfgs[ncfgs]->name) +
|
xmalloc(sizeof(struct pair) +
|
||||||
1;
|
strlen(de->d_name) * 2 + 2 +
|
||||||
sprintf(cfgs[ncfgs]->value, "%s/%s", dirs[di], de->d_name);
|
strlen(dirs[di]) + 1);
|
||||||
ncfgs++;
|
cfgs[ncfgs]->name =
|
||||||
|
(char *)cfgs[ncfgs] + sizeof(struct pair);
|
||||||
|
strcpy(cfgs[ncfgs]->name, de->d_name);
|
||||||
|
cfgs[ncfgs]->value =
|
||||||
|
(char *)cfgs[ncfgs] + sizeof(struct pair) +
|
||||||
|
strlen(cfgs[ncfgs]->name) + 1;
|
||||||
|
sprintf(cfgs[ncfgs]->value, "%s/%s", dirs[di],
|
||||||
|
de->d_name);
|
||||||
|
ncfgs++;
|
||||||
|
} else {
|
||||||
|
xerrx(EXIT_FAILURE, _("internal error"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
closedir(dp);
|
closedir(dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
qsort(cfgs, ncfgs, sizeof(struct cfg *), sortpairs);
|
qsort(cfgs, ncfgs, sizeof(struct cfg *), sortpairs);
|
||||||
|
|
||||||
for (i = 0; i < ncfgs; ++i) {
|
for (i = 0; i < ncfgs; ++i) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user