Fix uninitialized memory use with -MT and -MQ

This didn't break unless the first uninitialized byte was non-zero,
which happened to be the case on someone's Windows machine.

Would it be worth it setting up Valgrind in CI?
This commit is contained in:
ISSOtm
2020-05-06 19:19:10 +02:00
parent 645473e336
commit b299f6fb3b

View File

@@ -454,38 +454,43 @@ int main(int argc, char *argv[])
/* Long-only options */ /* Long-only options */
case 0: case 0:
if (depType) { switch (depType) {
switch (depType) { case 'G':
case 'G': oGeneratedMissingIncludes = true;
oGeneratedMissingIncludes = true; break;
break; case 'P':
case 'P': oGeneratePhonyDeps = true;
oGeneratePhonyDeps = true; break;
break; case 'Q':
case 'Q': case 'T':
case 'T': if (optind == argc)
if (optind == argc) errx(1, "-M%c takes a target file name argument",
errx(1, "-M%c takes a target file name argument", depType);
depType); ep = optarg;
ep = optarg; if (depType == 'Q')
if (depType == 'Q') ep = make_escape(ep);
ep = make_escape(ep);
nTargetFileNameLen += strlen(ep) + 1; nTargetFileNameLen += strlen(ep) + 1;
if (!tzTargetFileName) {
/* On first alloc, make an empty str */
tzTargetFileName =
malloc(nTargetFileNameLen + 1);
*tzTargetFileName = '\0';
} else {
tzTargetFileName = tzTargetFileName =
realloc(tzTargetFileName, realloc(tzTargetFileName,
nTargetFileNameLen + 1); nTargetFileNameLen + 1);
if (tzTargetFileName == NULL)
err(1, "Cannot append new file to target file list");
strcat(tzTargetFileName, ep);
if (depType == 'Q')
free(ep);
char *ptr = tzTargetFileName +
strlen(tzTargetFileName);
*ptr++ = ' ';
*ptr = '\0';
break;
} }
if (tzTargetFileName == NULL)
err(1, "Cannot append new file to target file list");
strcat(tzTargetFileName, ep);
if (depType == 'Q')
free(ep);
char *ptr = tzTargetFileName +
strlen(tzTargetFileName);
*ptr++ = ' ';
*ptr = '\0';
break;
} }
break; break;