diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c index 7c665300c8..304f557c31 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, diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index fce63ab243..5e97d132b2 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.81 2002/04/04 04:25:47 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.82 2002/04/25 00:56:36 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -109,9 +109,6 @@ next_token(FILE *fp, char *buf, const int bufsz) while (c != EOF && c != '\n' && (!isblank(c) || in_quote == true)) { - if (c == '"') - in_quote = !in_quote; - /* skip comments to EOL */ if (c == '#' && !in_quote) { @@ -138,11 +135,14 @@ next_token(FILE *fp, char *buf, const int bufsz) break; /* Literal double-quote is two double-quotes */ - if (c == '"') + if (in_quote && c == '"') was_quote = !was_quote; else was_quote = false; + if (c == '"') + in_quote = !in_quote; + c = getc(fp); }