mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
psql: fix startup crash caused by PSQLRC containing a tilde
'strdup' the PSQLRC environment variable value before calling a routine that might free() it. Backpatch to 9.2, where the bug first appeared.
This commit is contained in:
parent
c99e0d382f
commit
39d4c764da
@ -1617,11 +1617,11 @@ session_username(void)
|
||||
* substitute '~' with HOME or '~username' with username's home dir
|
||||
*
|
||||
*/
|
||||
char *
|
||||
void
|
||||
expand_tilde(char **filename)
|
||||
{
|
||||
if (!filename || !(*filename))
|
||||
return NULL;
|
||||
return;
|
||||
|
||||
/*
|
||||
* WIN32 doesn't use tilde expansion for file names. Also, it uses tilde
|
||||
@ -1669,5 +1669,5 @@ expand_tilde(char **filename)
|
||||
}
|
||||
#endif
|
||||
|
||||
return *filename;
|
||||
return;
|
||||
}
|
||||
|
@ -61,6 +61,6 @@ extern bool is_superuser(void);
|
||||
extern bool standard_strings(void);
|
||||
extern const char *session_username(void);
|
||||
|
||||
extern char *expand_tilde(char **filename);
|
||||
extern void expand_tilde(char **filename);
|
||||
|
||||
#endif /* COMMON_H */
|
||||
|
@ -591,7 +591,7 @@ process_psqlrc(char *argv0)
|
||||
char rc_file[MAXPGPATH];
|
||||
char my_exec_path[MAXPGPATH];
|
||||
char etc_path[MAXPGPATH];
|
||||
char *envrc;
|
||||
char *envrc = getenv("PSQLRC");
|
||||
|
||||
find_my_exec(argv0, my_exec_path);
|
||||
get_etc_path(my_exec_path, etc_path);
|
||||
@ -599,12 +599,13 @@ process_psqlrc(char *argv0)
|
||||
snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
|
||||
process_psqlrc_file(rc_file);
|
||||
|
||||
envrc = getenv("PSQLRC");
|
||||
|
||||
if (envrc != NULL && strlen(envrc) > 0)
|
||||
{
|
||||
expand_tilde(&envrc);
|
||||
process_psqlrc_file(envrc);
|
||||
/* might need to free() this */
|
||||
char *envrc_alloc = pg_strdup(envrc);
|
||||
|
||||
expand_tilde(&envrc_alloc);
|
||||
process_psqlrc_file(envrc_alloc);
|
||||
}
|
||||
else if (get_home_path(home))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user