diff options
author | Neil Conway <neilc@samurai.com> | 2005-06-21 01:20:09 +0000 |
---|---|---|
committer | Neil Conway <neilc@samurai.com> | 2005-06-21 01:20:09 +0000 |
commit | ec3a1af0a89a169c100f7157f7c6932234ae5988 (patch) | |
tree | 6e5bb335daf45e2ac0e373a19ce39c81d969d4e8 /src | |
parent | 09d1110c2a17d9cf5c429797070634ad14e3684f (diff) | |
download | postgresql-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.c | 25 |
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; } |