Skip to content
Snippets Groups Projects
Commit eb933162 authored by Stephen Frost's avatar Stephen Frost
Browse files

Fix issues with pg_ctl

The new, small, free_readfile managed to have bug in it which could
cause it to try and free something it shouldn't, and fix the case
where it was being called with an invalid pointer leading to a
segfault.

Noted by Bruce, issues introduced and fixed by me.
parent 6f37c080
No related branches found
No related tags found
No related merge requests found
......@@ -376,13 +376,14 @@ readfile(const char *path)
void
free_readfile(char **optlines)
{
int i = 0;
char *curr_line = NULL;
int i = 0;
if (!optlines)
return;
while (optlines[i++])
free(optlines[i]);
while ((curr_line = optlines[i++]))
free(curr_line);
free(optlines);
......@@ -1224,6 +1225,7 @@ do_status(void)
if (postmaster_is_alive((pid_t) pid))
{
char **optlines;
char **curr_line;
printf(_("%s: server is running (PID: %ld)\n"),
progname, pid);
......@@ -1231,8 +1233,8 @@ do_status(void)
optlines = readfile(postopts_file);
if (optlines != NULL)
{
for (; *optlines != NULL; optlines++)
fputs(*optlines, stdout);
for (curr_line = optlines; *curr_line != NULL; curr_line++)
fputs(*curr_line, stdout);
/* Free the results of readfile */
free_readfile(optlines);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment