Commit dc4da3dc authored by Tom Lane's avatar Tom Lane

Fix very minor memory leaks in psql's command.c.

\drds leaked its second pattern argument if any, and \connect leaked
any empty-string or "-" arguments.  These are old bugs, but it's hard
to imagine any real use-case where the leaks could amount to anything
meaningful, so not bothering with a back-patch.

Daniel Gustafsson and Tom Lane

Discussion: https://postgr.es/m/3641F19B-336A-431A-86CE-A80562505C5E@yesql.se
parent efd7f8e3
...@@ -806,6 +806,9 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) ...@@ -806,6 +806,9 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
pattern2 = psql_scan_slash_option(scan_state, pattern2 = psql_scan_slash_option(scan_state,
OT_NORMAL, NULL, true); OT_NORMAL, NULL, true);
success = listDbRoleSettings(pattern, pattern2); success = listDbRoleSettings(pattern, pattern2);
if (pattern2)
free(pattern2);
} }
else else
status = PSQL_CMD_UNKNOWN; status = PSQL_CMD_UNKNOWN;
...@@ -2725,6 +2728,8 @@ exec_command_slash_command_help(PsqlScanState scan_state, bool active_branch) ...@@ -2725,6 +2728,8 @@ exec_command_slash_command_help(PsqlScanState scan_state, bool active_branch)
/* /*
* Read and interpret an argument to the \connect slash command. * Read and interpret an argument to the \connect slash command.
*
* Returns a malloc'd string, or NULL if no/empty argument.
*/ */
static char * static char *
read_connect_arg(PsqlScanState scan_state) read_connect_arg(PsqlScanState scan_state)
...@@ -2750,7 +2755,10 @@ read_connect_arg(PsqlScanState scan_state) ...@@ -2750,7 +2755,10 @@ read_connect_arg(PsqlScanState scan_state)
return result; return result;
if (*result == '\0' || strcmp(result, "-") == 0) if (*result == '\0' || strcmp(result, "-") == 0)
{
free(result);
return NULL; return NULL;
}
return result; return result;
} }
......
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