Commit a3996754 authored by Bruce Momjian's avatar Bruce Momjian

In pg_upgrade, improve popen() failure detection by checking for fgets()

failures.
parent 981e5acd
......@@ -754,11 +754,11 @@ check_for_support_lib(ClusterInfo *cluster)
snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", cluster->bindir);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get pkglibdir data: %s\n",
getErrorText(errno));
if ((output = popen(cmd, "r")) == NULL ||
fgets(libdir, sizeof(libdir), output) == NULL)
pg_log(PG_FATAL, "Could not get pkglibdir data using %s: %s\n",
cmd, getErrorText(errno));
fgets(libdir, sizeof(libdir), output);
pclose(output);
......@@ -787,11 +787,10 @@ get_bin_version(ClusterInfo *cluster)
snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get pg_ctl version data: %s\n",
getErrorText(errno));
fgets(cmd_output, sizeof(cmd_output), output);
if ((output = popen(cmd, "r")) == NULL ||
fgets(cmd_output, sizeof(cmd_output), output) == NULL)
pg_log(PG_FATAL, "Could not get pg_ctl version data using %s: %s\n",
cmd, getErrorText(errno));
pclose(output);
......
......@@ -109,8 +109,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
fflush(stderr);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get control data: %s\n",
getErrorText(errno));
pg_log(PG_FATAL, "Could not get control data using %s: %s\n",
cmd, getErrorText(errno));
/* Only pre-8.4 has these so if they are not set below we will check later */
cluster->controldata.lc_collate = NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment