Re: [BUGS] Bug #756: suggestion: file with password instead - Mailing list pgsql-patches
| From | Bruce Momjian |
|---|---|
| Subject | Re: [BUGS] Bug #756: suggestion: file with password instead |
| Date | |
| Msg-id | 200209060232.g862Wel10050@candle.pha.pa.us Whole thread Raw |
| In response to | Re: [BUGS] Bug #756: suggestion: file with password instead of (Tom Lane <tgl@sss.pgh.pa.us>) |
| List | pgsql-patches |
OK, changes made. The pasting wasn't my idea but was there as part of
the original source:
sprintf(psqlrc, "%s/.psqlrc-" PG_VERSION, home);
I thought that was the way to do it so I propogated it consistenly.
No unpropoaged. Thanks for the code review.
---------------------------------------------------------------------------
Tom Lane wrote:
> 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
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: src/bin/psql/input.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/input.c,v
retrieving revision 1.20
diff -c -c -r1.20 input.c
*** src/bin/psql/input.c 5 Sep 2002 22:05:50 -0000 1.20
--- src/bin/psql/input.c 6 Sep 2002 02:27:37 -0000
***************
*** 30,36 ****
static void finishInput(int, void *);
#endif
! #define PSQLHISTORY "/.psql_history"
/*
--- 30,36 ----
static void finishInput(int, void *);
#endif
! #define PSQLHISTORY ".psql_history"
/*
***************
*** 144,155 ****
home = getenv("HOME");
if (home)
{
! char *psql_history = (char *) malloc(strlen(home) +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
! sprintf(psql_history, "%s" PSQLHISTORY, home);
read_history(psql_history);
free(psql_history);
}
--- 144,155 ----
home = getenv("HOME");
if (home)
{
! char *psql_history = (char *) malloc(strlen(home) + 1 +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
! sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
read_history(psql_history);
free(psql_history);
}
***************
*** 204,210 ****
home = getenv("HOME");
if (home)
{
! psql_history = (char *) malloc(strlen(home) +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
--- 204,210 ----
home = getenv("HOME");
if (home)
{
! psql_history = (char *) malloc(strlen(home) + 1 +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
***************
*** 212,218 ****
if (var)
stifle_history(atoi(var));
! sprintf(psql_history, "%s" PSQLHISTORY, home);
write_history(psql_history);
free(psql_history);
}
--- 212,218 ----
if (var)
stifle_history(atoi(var));
! sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
write_history(psql_history);
free(psql_history);
}
Index: src/bin/psql/startup.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/startup.c,v
retrieving revision 1.65
diff -c -c -r1.65 startup.c
*** src/bin/psql/startup.c 5 Sep 2002 22:05:50 -0000 1.65
--- src/bin/psql/startup.c 6 Sep 2002 02:27:39 -0000
***************
*** 42,48 ****
*/
PsqlSettings pset;
! #define PSQLRC "/.psqlrc"
/*
* Structures to pass information between the option parsing routine
--- 42,48 ----
*/
PsqlSettings pset;
! #define PSQLRC ".psqlrc"
/*
* Structures to pass information between the option parsing routine
***************
*** 605,611 ****
if (home)
{
! psqlrc = malloc(strlen(home) + strlen(PSQLRC) + 1 +
strlen(PG_VERSION) + 1);
if (!psqlrc)
{
--- 605,611 ----
if (home)
{
! psqlrc = malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
strlen(PG_VERSION) + 1);
if (!psqlrc)
{
***************
*** 613,624 ****
exit(EXIT_FAILURE);
}
! sprintf(psqlrc, "%s" PSQLRC "-" PG_VERSION, home);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
else
{
! sprintf(psqlrc, "%s" PSQLRC, home);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
}
--- 613,624 ----
exit(EXIT_FAILURE);
}
! sprintf(psqlrc, "%s/%s-%s", home, PSQLRC, PG_VERSION);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
else
{
! sprintf(psqlrc, "%s/%s", home, PSQLRC);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
}
Index: src/interfaces/libpq/fe-connect.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.203
diff -c -c -r1.203 fe-connect.c
*** src/interfaces/libpq/fe-connect.c 5 Sep 2002 22:24:23 -0000 1.203
--- src/interfaces/libpq/fe-connect.c 6 Sep 2002 02:27:50 -0000
***************
*** 66,72 ****
#define NOTIFYLIST_INITIAL_SIZE 10
#define NOTIFYLIST_GROWBY 10
! #define PGPASSFILE "/.pgpass"
/* ----------
* Definition of the conninfo parameters and their fallback resources.
--- 66,72 ----
#define NOTIFYLIST_INITIAL_SIZE 10
#define NOTIFYLIST_GROWBY 10
! #define PGPASSFILE ".pgpass"
/* ----------
* Definition of the conninfo parameters and their fallback resources.
***************
*** 2927,2944 ****
home = getenv("HOME");
if (home)
{
! pgpassfile = malloc(strlen(home) + strlen(PGPASSFILE) + 1);
if (!pgpassfile)
{
-
fprintf(stderr, libpq_gettext("out of memory\n"));
! exit(EXIT_FAILURE);
}
}
else
return NULL;
! sprintf(pgpassfile, "%s" PGPASSFILE, home);
/* If password file cannot be opened, ignore it. */
if (stat(pgpassfile, &stat_buf) == -1)
--- 2927,2943 ----
home = getenv("HOME");
if (home)
{
! pgpassfile = malloc(strlen(home) + 1 + strlen(PGPASSFILE) + 1);
if (!pgpassfile)
{
fprintf(stderr, libpq_gettext("out of memory\n"));
! return NULL;
}
}
else
return NULL;
! sprintf(pgpassfile, "%s/%s", home, PGPASSFILE);
/* If password file cannot be opened, ignore it. */
if (stat(pgpassfile, &stat_buf) == -1)
Index: src/bin/psql/input.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/input.c,v
retrieving revision 1.20
diff -c -c -r1.20 input.c
*** src/bin/psql/input.c 5 Sep 2002 22:05:50 -0000 1.20
--- src/bin/psql/input.c 6 Sep 2002 02:27:37 -0000
***************
*** 30,36 ****
static void finishInput(int, void *);
#endif
! #define PSQLHISTORY "/.psql_history"
/*
--- 30,36 ----
static void finishInput(int, void *);
#endif
! #define PSQLHISTORY ".psql_history"
/*
***************
*** 144,155 ****
home = getenv("HOME");
if (home)
{
! char *psql_history = (char *) malloc(strlen(home) +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
! sprintf(psql_history, "%s" PSQLHISTORY, home);
read_history(psql_history);
free(psql_history);
}
--- 144,155 ----
home = getenv("HOME");
if (home)
{
! char *psql_history = (char *) malloc(strlen(home) + 1 +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
! sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
read_history(psql_history);
free(psql_history);
}
***************
*** 204,210 ****
home = getenv("HOME");
if (home)
{
! psql_history = (char *) malloc(strlen(home) +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
--- 204,210 ----
home = getenv("HOME");
if (home)
{
! psql_history = (char *) malloc(strlen(home) + 1 +
strlen(PSQLHISTORY) + 1);
if (psql_history)
{
***************
*** 212,218 ****
if (var)
stifle_history(atoi(var));
! sprintf(psql_history, "%s" PSQLHISTORY, home);
write_history(psql_history);
free(psql_history);
}
--- 212,218 ----
if (var)
stifle_history(atoi(var));
! sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
write_history(psql_history);
free(psql_history);
}
Index: src/bin/psql/startup.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/startup.c,v
retrieving revision 1.65
diff -c -c -r1.65 startup.c
*** src/bin/psql/startup.c 5 Sep 2002 22:05:50 -0000 1.65
--- src/bin/psql/startup.c 6 Sep 2002 02:27:39 -0000
***************
*** 42,48 ****
*/
PsqlSettings pset;
! #define PSQLRC "/.psqlrc"
/*
* Structures to pass information between the option parsing routine
--- 42,48 ----
*/
PsqlSettings pset;
! #define PSQLRC ".psqlrc"
/*
* Structures to pass information between the option parsing routine
***************
*** 605,611 ****
if (home)
{
! psqlrc = malloc(strlen(home) + strlen(PSQLRC) + 1 +
strlen(PG_VERSION) + 1);
if (!psqlrc)
{
--- 605,611 ----
if (home)
{
! psqlrc = malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
strlen(PG_VERSION) + 1);
if (!psqlrc)
{
***************
*** 613,624 ****
exit(EXIT_FAILURE);
}
! sprintf(psqlrc, "%s" PSQLRC "-" PG_VERSION, home);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
else
{
! sprintf(psqlrc, "%s" PSQLRC, home);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
}
--- 613,624 ----
exit(EXIT_FAILURE);
}
! sprintf(psqlrc, "%s/%s-%s", home, PSQLRC, PG_VERSION);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
else
{
! sprintf(psqlrc, "%s/%s", home, PSQLRC);
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
}
Index: src/interfaces/libpq/fe-connect.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.203
diff -c -c -r1.203 fe-connect.c
*** src/interfaces/libpq/fe-connect.c 5 Sep 2002 22:24:23 -0000 1.203
--- src/interfaces/libpq/fe-connect.c 6 Sep 2002 02:27:50 -0000
***************
*** 66,72 ****
#define NOTIFYLIST_INITIAL_SIZE 10
#define NOTIFYLIST_GROWBY 10
! #define PGPASSFILE "/.pgpass"
/* ----------
* Definition of the conninfo parameters and their fallback resources.
--- 66,72 ----
#define NOTIFYLIST_INITIAL_SIZE 10
#define NOTIFYLIST_GROWBY 10
! #define PGPASSFILE ".pgpass"
/* ----------
* Definition of the conninfo parameters and their fallback resources.
***************
*** 2927,2944 ****
home = getenv("HOME");
if (home)
{
! pgpassfile = malloc(strlen(home) + strlen(PGPASSFILE) + 1);
if (!pgpassfile)
{
-
fprintf(stderr, libpq_gettext("out of memory\n"));
! exit(EXIT_FAILURE);
}
}
else
return NULL;
! sprintf(pgpassfile, "%s" PGPASSFILE, home);
/* If password file cannot be opened, ignore it. */
if (stat(pgpassfile, &stat_buf) == -1)
--- 2927,2943 ----
home = getenv("HOME");
if (home)
{
! pgpassfile = malloc(strlen(home) + 1 + strlen(PGPASSFILE) + 1);
if (!pgpassfile)
{
fprintf(stderr, libpq_gettext("out of memory\n"));
! return NULL;
}
}
else
return NULL;
! sprintf(pgpassfile, "%s/%s", home, PGPASSFILE);
/* If password file cannot be opened, ignore it. */
if (stat(pgpassfile, &stat_buf) == -1)
pgsql-patches by date: