diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-04-25 00:56:36 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-04-25 00:56:36 +0000 |
commit | 6cdba03d38a71e58576dd2615dc6897bbfdb133d (patch) | |
tree | 4ffc073b92fe89267981486510c4c1c2a100863f /src/backend/libpq/crypt.c | |
parent | 39e77dd36546d24ffb2b6f307f26f19a2f6bafed (diff) | |
download | postgresql-6cdba03d38a71e58576dd2615dc6897bbfdb133d.tar.gz postgresql-6cdba03d38a71e58576dd2615dc6897bbfdb133d.zip |
Fix password code to deal with new quoting code.
Diffstat (limited to 'src/backend/libpq/crypt.c')
-rw-r--r-- | src/backend/libpq/crypt.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c index 7c665300c85..304f557c319 100644 --- a/src/backend/libpq/crypt.c +++ b/src/backend/libpq/crypt.c @@ -9,7 +9,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.45 2002/04/04 04:25:47 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.46 2002/04/25 00:56:36 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -31,18 +31,26 @@ int md5_crypt_verify(const Port *port, const char *user, const char *pgpass) { - char *passwd, - *valuntil, + char *passwd = NULL, + *valuntil = NULL, *crypt_pwd; int retval = STATUS_ERROR; List **line; - + List *token; + if ((line = get_user_line(user)) == NULL) return STATUS_ERROR; - passwd = lfirst(lnext(lnext(*line))); - valuntil = lfirst(lnext(lnext(lnext(*line)))); - + /* Skip over line number and username */ + token = lnext(lnext(*line)); + if (token) + { + passwd = lfirst(token); + token = lnext(token); + if (token) + valuntil = lfirst(token); + } + if (passwd == NULL || *passwd == '\0') { if (passwd) @@ -120,7 +128,7 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass) AbsoluteTime vuntil, current; - if (!valuntil || strcmp(valuntil, "\\N") == 0) + if (!valuntil) vuntil = INVALID_ABSTIME; else vuntil = DatumGetAbsoluteTime(DirectFunctionCall1(nabstimein, |