]> granicus.if.org Git - postgresql/commitdiff
Fix a potential backend crash during authentication when parsing a
authorNeil Conway <neilc@samurai.com>
Tue, 21 Jun 2005 01:20:09 +0000 (01:20 +0000)
committerNeil Conway <neilc@samurai.com>
Tue, 21 Jun 2005 01:20:09 +0000 (01:20 +0000)
malformed ident map file.  This was introduced by the linked list
rewrite in 8.0 -- mea maxima culpa.

Per Coverity static analysis performed by EnterpriseDB.

src/backend/libpq/hba.c

index 658b42bbfac6bab87f47d030151b558c506b4fcf..bd9b84cffea635eb9043d89131b754477ee42d7c 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.140 2005/02/26 18:43:33 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.141 2005/06/21 01:20:09 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1135,16 +1135,16 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
        token = lfirst(line_item);
        file_map = token;
 
-       /* Get the ident user token (must be provided) */
+       /* Get the ident user token */
        line_item = lnext(line_item);
-       if (!line)
+       if (!line_item)
                goto ident_syntax;
        token = lfirst(line_item);
        file_ident_user = token;
 
        /* Get the PG username token */
        line_item = lnext(line_item);
-       if (!line)
+       if (!line_item)
                goto ident_syntax;
        token = lfirst(line_item);
        file_pguser = token;
@@ -1154,21 +1154,14 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
                strcmp(file_pguser, pg_user) == 0 &&
                strcmp(file_ident_user, ident_user) == 0)
                *found_p = true;
+
        return;
 
 ident_syntax:
-       if (line_item)
-               ereport(LOG,
-                               (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                                errmsg("invalid entry in file \"%s\" at line %d, token \"%s\"",
-                                               IdentFileName, line_number,
-                                               (const char *) lfirst(line_item))));
-       else
-               ereport(LOG,
-                               (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                 errmsg("missing entry in file \"%s\" at end of line %d",
-                                IdentFileName, line_number)));
-
+       ereport(LOG,
+                       (errcode(ERRCODE_CONFIG_FILE_ERROR),
+                        errmsg("missing entry in file \"%s\" at end of line %d",
+                                       IdentFileName, line_number)));
        *error_p = true;
 }