From: Joel Rosdahl Date: Thu, 25 Apr 2019 19:21:53 +0000 (+0200) Subject: Calculate length correctly in win32argvtos X-Git-Tag: v3.7.1~15 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=e96d60be2a1c479594b7e4b4e7b0e87f6a374182;p=thirdparty%2Fccache.git Calculate length correctly in win32argvtos --- diff --git a/src/execute.c b/src/execute.c index af95a343c..3ee095346 100644 --- a/src/execute.c +++ b/src/execute.c @@ -30,7 +30,6 @@ win32argvtos(char *prefix, char **argv, int *length) { int i = 0; int k = 0; - *length = 0; char *arg = prefix ? prefix : argv[i++]; do { int bs = 0; @@ -53,9 +52,9 @@ win32argvtos(char *prefix, char **argv, int *length) char *ptr = malloc(k + 1); char *str = ptr; if (!str) { + *length = 0; return NULL; } - *length = k; i = 0; arg = prefix ? prefix : argv[i++]; @@ -85,6 +84,7 @@ win32argvtos(char *prefix, char **argv, int *length) } while ((arg = argv[i++])); ptr[-1] = '\0'; + *length = ptr - str - 1; return str; } @@ -174,7 +174,7 @@ win32execute(char *path, char **argv, int doreturn, char *tmp_file = format("%s.tmp", path); FILE *fp = create_tmp_file(&tmp_file, "w"); char atfile[MAX_PATH + 3]; - fwrite(args, 1, length - 1, fp); + fwrite(args, 1, length, fp); fclose(fp); if (ferror(fp)) { cc_log("Error writing @file; this command will probably fail: %s", args);