diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-10-03 21:45:20 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-10-03 21:45:20 +0000 |
commit | fb541a1b59afa207984ad6e98cefb6548f79ba10 (patch) | |
tree | 61e9a6a6b9496ed111549aa45eef031a24d7ee59 | |
parent | 0a42adcc320b0917d44a95029c35ec0343192268 (diff) | |
download | postgresql-fb541a1b59afa207984ad6e98cefb6548f79ba10.tar.gz postgresql-fb541a1b59afa207984ad6e98cefb6548f79ba10.zip |
Fix yesno_prompt() memory leak in /script tools, reported by Converity.
-rw-r--r-- | src/bin/scripts/common.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/bin/scripts/common.c b/src/bin/scripts/common.c index 93d64d7ff5b..d5f02620544 100644 --- a/src/bin/scripts/common.c +++ b/src/bin/scripts/common.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.22 2006/09/22 19:51:14 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.23 2006/10/03 21:45:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -208,20 +208,28 @@ yesno_prompt(const char *question) { char prompt[256]; + /* translator: This is a question followed by the translated options for "yes" and "no". */ + snprintf(prompt, sizeof(prompt), _("%s (%s/%s) "), + _(question), _(PG_YESLETTER), _(PG_NOLETTER)); + for (;;) { char *resp; - /* translator: This is a question followed by the translated options for "yes" and "no". */ - snprintf(prompt, sizeof(prompt), _("%s (%s/%s) "), - _(question), _(PG_YESLETTER), _(PG_NOLETTER)); resp = simple_prompt(prompt, 1, true); if (strcmp(resp, _(PG_YESLETTER)) == 0) + { + free(resp); return true; + } else if (strcmp(resp, _(PG_NOLETTER)) == 0) + { + free(resp); return false; + } + free(resp); printf(_("Please answer \"%s\" or \"%s\".\n"), _(PG_YESLETTER), _(PG_NOLETTER)); } |