Fix password code to deal with new quoting code.
authorBruce Momjian
Thu, 25 Apr 2002 00:56:36 +0000 (00:56 +0000)
committerBruce Momjian
Thu, 25 Apr 2002 00:56:36 +0000 (00:56 +0000)
src/backend/libpq/crypt.c
src/backend/libpq/hba.c

index 7c665300c85ef285cd5c6aea58c16868db5647dc..304f557c319cf3f2de86136d96f93e977b920161 100644 (file)
@@ -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 $
  *
  *-------------------------------------------------------------------------
  */
 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,
index fce63ab2436d721cd7d762f206fbf21db4bd7d9b..5e97d132b2a792dd0b2f086e526acefcd868daed 100644 (file)
@@ -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);
        }