Re: [BUGS] Bug #756: suggestion: file with password instead of

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Bruce Momjian <pgman@candle.pha.pa.us>
Cc: PostgreSQL-patches <pgsql-patches@postgresql.org>
Date: 2002-09-05T23:09:56Z
Lists: pgsql-bugs
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> + #define PSQLHISTORY	"/.psql_history"
> ...
> !             char       *psql_history = (char *) malloc(strlen(home) +
> !                                                 strlen(PSQLHISTORY) + 1);
  
> !                 sprintf(psql_history, "%s" PSQLHISTORY, home);

This seems like a really ugly coding practice.  The sprintf is hard to
read and absolutely dependent on the assumption that PSQLHISTORY
contains no %.  I'd suggest this pattern:

#define PSQLHISTORY    ".psql_history"
> ...
> !             char       *psql_history = (char *) malloc(strlen(home) +
> !                                                 strlen(PSQLHISTORY) + 2);
  
> !                 sprintf(psql_history, "%s/%s", home, PSQLHISTORY);

as being easier to read and safer.

In PasswordFromFile():

> +     /* Look for it in the home dir */
> +     home = getenv("HOME");
> +     if (home)
> +     {
> +         pgpassfile = malloc(strlen(home) + strlen(PGPASSFILE) + 1);
> +         if (!pgpassfile)
> +         {
> +             fprintf(stderr, gettext("%s: out of memory\n"), pset.progname);
> +             exit(EXIT_FAILURE);
> +         }
> +     }
> +     else
> +         return NULL;

libpq has no business calling exit().  How about just "return NULL" like
all the other failure cases in that routine?

			regards, tom lane