summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2009-06-24 13:39:42 +0000
committerMagnus Hagander2009-06-24 13:39:42 +0000
commit104bee6d66da1fbc0f6b569393113bd90d0b046a (patch)
tree42c7634215b7f2970f097ab851e105d8cb4d2213
parent15069f2ed8eb7669540601a7cb3f5d8ed7e36edc (diff)
parse_ident_usermap() shuold use ereport(LOG) and not ERROR, and put the
return value in the *error_p variable. Noted by Tom.
-rw-r--r--src/backend/libpq/hba.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 825509ff21..b3df7ee642 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -1493,7 +1493,7 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
char errstr[100];
pg_regerror(r, &re, errstr, sizeof(errstr));
- ereport(ERROR,
+ ereport(LOG,
(errcode(ERRCODE_INVALID_REGULAR_EXPRESSION),
errmsg("invalid regular expression \"%s\": %s", file_ident_user + 1, errstr)));
@@ -1515,7 +1515,7 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
{
/* REG_NOMATCH is not an error, everything else is */
pg_regerror(r, &re, errstr, sizeof(errstr));
- ereport(ERROR,
+ ereport(LOG,
(errcode(ERRCODE_INVALID_REGULAR_EXPRESSION),
errmsg("regular expression match for \"%s\" failed: %s", file_ident_user + 1, errstr)));
*error_p = true;
@@ -1531,10 +1531,15 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
{
/* substitution of the first argument requested */
if (matches[1].rm_so < 0)
- ereport(ERROR,
+ {
+ ereport(LOG,
(errcode(ERRCODE_INVALID_REGULAR_EXPRESSION),
errmsg("regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"",
file_ident_user + 1, file_pgrole)));
+ pg_regfree(&re);
+ *error_p = true;
+ return;
+ }
/*
* length: original length minus length of \1 plus length of match