]> granicus.if.org Git - postgresql/commitdiff
parse_ident_usermap() shuold use ereport(LOG) and not ERROR, and put the
authorMagnus Hagander <magnus@hagander.net>
Wed, 24 Jun 2009 13:39:42 +0000 (13:39 +0000)
committerMagnus Hagander <magnus@hagander.net>
Wed, 24 Jun 2009 13:39:42 +0000 (13:39 +0000)
return value in the *error_p variable.

Noted by Tom.

src/backend/libpq/hba.c

index 53d3d3b07e644c742d7e4cd6309b81d40cbab968..27e0c431ca8ba3df4742558f7487a1efaa73cf50 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.187 2009/06/21 20:15:32 petere Exp $
+ *       $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.188 2009/06/24 13:39:42 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -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