]> granicus.if.org Git - postgresql/commitdiff
Fix very minor memory leaks in psql's command.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Jul 2017 15:10:38 +0000 (11:10 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Jul 2017 15:10:38 +0000 (11:10 -0400)
\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

src/bin/psql/command.c

index 14c64208ca3fcf22e3218fdefcd5d6c08f7d824f..4e04459d45ea53a5104fe92814e37fe6cf00ffea 100644 (file)
@@ -806,6 +806,9 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
                                                pattern2 = psql_scan_slash_option(scan_state,
                                                                                                                  OT_NORMAL, NULL, true);
                                        success = listDbRoleSettings(pattern, pattern2);
+
+                                       if (pattern2)
+                                               free(pattern2);
                                }
                                else
                                        status = PSQL_CMD_UNKNOWN;
@@ -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.
+ *
+ * Returns a malloc'd string, or NULL if no/empty argument.
  */
 static char *
 read_connect_arg(PsqlScanState scan_state)
@@ -2750,7 +2755,10 @@ read_connect_arg(PsqlScanState scan_state)
                return result;
 
        if (*result == '\0' || strcmp(result, "-") == 0)
+       {
+               free(result);
                return NULL;
+       }
 
        return result;
 }