PR 80047 - fixincludes/fixincl.c: PVS-Studio: Improper Release of Memory Before Removing Last Reference (CWE-401) points out that the fixincludes program calls getcwd with the first argument set to NULL, apparently a Glibc extension, to have the function allocate the memory to which it then returns a pointer.
The attached patch avoids this and also avoids assuming the function cannot fail. This is not a regression so I assume it's not suitable for GCC 7 but rather for GCC 8 when stage 1 opens. Martin
PR other/80047 - fixincludes/fixincl.c: PVS-Studio: Improper Release of Memory Before Removing Last Reference (CWE-401) fixincludes/ChangeLog: PR other/80047 * fixincl.c (process): Avoid relying on getcwd extensions and assuming the function will succeed. diff --git a/fixincludes/fixincl.c b/fixincludes/fixincl.c index 6dba2f6..6e6eb21 100644 --- a/fixincludes/fixincl.c +++ b/fixincludes/fixincl.c @@ -1353,8 +1353,10 @@ process (void) if (access (pz_curr_file, R_OK) != 0) { int erno = errno; + char cwdbuf[MAXPATHLEN]; + char *cwd = getcwd (cwdbuf, sizeof cwdbuf); fprintf (stderr, "Cannot access %s from %s\n\terror %d (%s)\n", - pz_curr_file, getcwd ((char *) NULL, MAXPATHLEN), + pz_curr_file, cwd ? cwd : "current working directory", erno, xstrerror (erno)); return; }