const char ** argv = malloc(sizeof(*argv) * argvAlloced);
int argc = 0;
int buflen = strlen(s) + 1;
- char * buf = memset(alloca(buflen), 0, buflen);
+ char *buf0 = calloc(buflen, 1);
+ char *buf = buf0;
argv[argc] = buf;
src++;
if (!*src) {
free(argv);
+ free(buf0);
return POPT_ERROR_BADQUOTE;
}
if (*src != quote) *buf++ = '\\';
src++;
if (!*src) {
free(argv);
+ free(buf0);
return POPT_ERROR_BADQUOTE;
}
/*@fallthrough@*/
(void) poptDupArgv(argc, argv, argcPtr, argvPtr);
free(argv);
-
+ free(buf0);
return 0;
}