aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNeil Conway <neilc@samurai.com>2005-06-21 01:20:09 +0000
committerNeil Conway <neilc@samurai.com>2005-06-21 01:20:09 +0000
commitec3a1af0a89a169c100f7157f7c6932234ae5988 (patch)
tree6e5bb335daf45e2ac0e373a19ce39c81d969d4e8 /src
parent09d1110c2a17d9cf5c429797070634ad14e3684f (diff)
downloadpostgresql-ec3a1af0a89a169c100f7157f7c6932234ae5988.tar.gz
postgresql-ec3a1af0a89a169c100f7157f7c6932234ae5988.zip
Fix a potential backend crash during authentication when parsing a
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.
Diffstat (limited to 'src')
-rw-r--r--src/backend/libpq/hba.c25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 658b42bbfac..bd9b84cffea 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -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;
}