Don't leak memory during failure exit from SelectConfigFiles().

Make sure the memory allocated by make_absolute_path() is freed
when SelectConfigFiles() fails.  Since all the callers will exit
immediately in that case, there's no practical gain here, but
silencing Valgrind leak complaints seems useful.  In any case,
it was inconsistent that only one of the failure exits did this.

Author: Aleksander Alekseev <aleksander@tigerdata.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CAJ7c6TMByXE8dc7zDvDWTQjk6o-XXAdRg_RAg5CBaUOgFPV3LQ%40mail.gmail.com
pull/239/head
Tom Lane 4 weeks ago
parent 4ec6e22b43
commit ed07361721
  1. 18
      src/backend/utils/misc/guc.c

@ -1803,7 +1803,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
configdir);
if (errno == ENOENT)
write_stderr("Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n");
return false;
goto fail;
}
/*
@ -1830,7 +1830,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
"You must specify the --config-file or -D invocation "
"option or set the PGDATA environment variable.\n",
progname);
return false;
goto fail;
}
/*
@ -1851,8 +1851,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
{
write_stderr("%s: could not access the server configuration file \"%s\": %m\n",
progname, ConfigFileName);
free(configdir);
return false;
goto fail;
}
/*
@ -1882,7 +1881,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
"or by the -D invocation option, or by the "
"PGDATA environment variable.\n",
progname, ConfigFileName);
return false;
goto fail;
}
/*
@ -1934,7 +1933,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
"or by the -D invocation option, or by the "
"PGDATA environment variable.\n",
progname, ConfigFileName);
return false;
goto fail;
}
SetConfigOption("hba_file", fname, PGC_POSTMASTER, PGC_S_OVERRIDE);
@ -1965,7 +1964,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
"or by the -D invocation option, or by the "
"PGDATA environment variable.\n",
progname, ConfigFileName);
return false;
goto fail;
}
SetConfigOption("ident_file", fname, PGC_POSTMASTER, PGC_S_OVERRIDE);
@ -1977,6 +1976,11 @@ SelectConfigFiles(const char *userDoption, const char *progname)
free(configdir);
return true;
fail:
free(configdir);
return false;
}
/*

Loading…
Cancel
Save