mirror of
https://github.com/postgres/postgres.git
synced 2025-10-13 18:28:01 +03:00
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
This commit is contained in:
@@ -1803,7 +1803,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
|
|||||||
configdir);
|
configdir);
|
||||||
if (errno == ENOENT)
|
if (errno == ENOENT)
|
||||||
write_stderr("Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n");
|
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 "
|
"You must specify the --config-file or -D invocation "
|
||||||
"option or set the PGDATA environment variable.\n",
|
"option or set the PGDATA environment variable.\n",
|
||||||
progname);
|
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",
|
write_stderr("%s: could not access the server configuration file \"%s\": %m\n",
|
||||||
progname, ConfigFileName);
|
progname, ConfigFileName);
|
||||||
free(configdir);
|
goto fail;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1882,7 +1881,7 @@ SelectConfigFiles(const char *userDoption, const char *progname)
|
|||||||
"or by the -D invocation option, or by the "
|
"or by the -D invocation option, or by the "
|
||||||
"PGDATA environment variable.\n",
|
"PGDATA environment variable.\n",
|
||||||
progname, ConfigFileName);
|
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 "
|
"or by the -D invocation option, or by the "
|
||||||
"PGDATA environment variable.\n",
|
"PGDATA environment variable.\n",
|
||||||
progname, ConfigFileName);
|
progname, ConfigFileName);
|
||||||
return false;
|
goto fail;
|
||||||
}
|
}
|
||||||
SetConfigOption("hba_file", fname, PGC_POSTMASTER, PGC_S_OVERRIDE);
|
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 "
|
"or by the -D invocation option, or by the "
|
||||||
"PGDATA environment variable.\n",
|
"PGDATA environment variable.\n",
|
||||||
progname, ConfigFileName);
|
progname, ConfigFileName);
|
||||||
return false;
|
goto fail;
|
||||||
}
|
}
|
||||||
SetConfigOption("ident_file", fname, PGC_POSTMASTER, PGC_S_OVERRIDE);
|
SetConfigOption("ident_file", fname, PGC_POSTMASTER, PGC_S_OVERRIDE);
|
||||||
|
|
||||||
@@ -1977,6 +1976,11 @@ SelectConfigFiles(const char *userDoption, const char *progname)
|
|||||||
free(configdir);
|
free(configdir);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
free(configdir);
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user