diff --git a/sbin/ccdconfig/ccdconfig.c b/sbin/ccdconfig/ccdconfig.c --- a/sbin/ccdconfig/ccdconfig.c +++ b/sbin/ccdconfig/ccdconfig.c @@ -288,6 +288,7 @@ char *cp, **argv; int argc, rval; gid_t egid; + char **nargv; rval = 0; egid = getegid(); @@ -315,11 +316,12 @@ for (cp = line; (cp = strtok(cp, " \t")) != NULL; cp = NULL) { if (*cp == '#') break; - if ((argv = realloc(argv, + if ((nargv = realloc(argv, sizeof(char *) * ++argc)) == NULL) { warnx("no memory to configure ccds"); return (1); } + argv = nargv; argv[argc - 1] = cp; /* * If our action is to unconfigure all, then pass