X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/b348deae3ddbb25802a5b533d91e06832212b48a..d2e02b7d96585d2b5dc02f6f396d45942cfa8d44:/popt/poptparse.c diff --git a/popt/poptparse.c b/popt/poptparse.c index 7c9f06be..8f00769b 100644 --- a/popt/poptparse.c +++ b/popt/poptparse.c @@ -43,7 +43,8 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr) 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; @@ -55,6 +56,7 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr) src++; if (!*src) { free(argv); + free(buf0); return POPT_ERROR_BADQUOTE; } if (*src != quote) *buf++ = '\\'; @@ -78,6 +80,7 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr) src++; if (!*src) { free(argv); + free(buf0); return POPT_ERROR_BADQUOTE; } /*@fallthrough@*/ @@ -94,6 +97,6 @@ int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr) (void) poptDupArgv(argc, argv, argcPtr, argvPtr); free(argv); - + free(buf0); return 0; }