On Wed, Apr 07, 2021 at 01:24:01PM +0200, Magnus Hagander wrote: > On Wed, Apr 7, 2021 at 1:01 PM Erik Rijkers <[email protected]> wrote: > > Recently (last day or so), I get this warning from gcc 10.2:
Same compiler version here, but I did not get warned. Are you using any particular flag? > But that also highlights -- shouldn't that function then also be made > to use hba_authname(), and the assert moved into the function? That > seems like the cleanest way? Good idea, that's much cleaner this way. Do you like the attached? -- Michael
diff --git a/src/include/libpq/hba.h b/src/include/libpq/hba.h
index 63f2962139..6bd336899c 100644
--- a/src/include/libpq/hba.h
+++ b/src/include/libpq/hba.h
@@ -137,7 +137,7 @@ typedef struct Port hbaPort;
extern bool load_hba(void);
extern bool load_ident(void);
-extern const char *hba_authname(hbaPort *port);
+extern const char *hba_authname(HbaLine *hba);
extern void hba_getauthmethod(hbaPort *port);
extern int check_usermap(const char *usermap_name,
const char *pg_role, const char *auth_user,
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index dee056b0d6..e93404dd9e 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -379,7 +379,7 @@ set_authn_id(Port *port, const char *id)
ereport(LOG,
errmsg("connection authenticated: identity=\"%s\" method=%s "
"(%s:%d)",
- port->authn_id, hba_authname(port), HbaFileName,
+ port->authn_id, hba_authname(port->hba), HbaFileName,
port->hba->linenumber));
}
}
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index b720b03e9a..a6c88599a0 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -2607,14 +2607,9 @@ fill_hba_line(Tuplestorestate *tuple_store, TupleDesc tupdesc,
else
nulls[index++] = true;
- /*
- * Make sure UserAuthName[] tracks additions to the UserAuth enum
- */
- StaticAssertStmt(lengthof(UserAuthName) == USER_AUTH_LAST + 1,
- "UserAuthName[] must match the UserAuth enum");
/* auth_method */
- values[index++] = CStringGetTextDatum(UserAuthName[hba->auth_method]);
+ values[index++] = CStringGetTextDatum(hba_authname(hba));
/* options */
options = gethba_options(hba);
@@ -3150,18 +3145,13 @@ hba_getauthmethod(hbaPort *port)
* should not be freed.
*/
const char *
-hba_authname(hbaPort *port)
+hba_authname(HbaLine *hba)
{
- UserAuth auth_method;
+ /*
+ * Make sure UserAuthName[] tracks additions to the UserAuth enum.
+ */
+ StaticAssertStmt(lengthof(UserAuthName) == USER_AUTH_LAST + 1,
+ "UserAuthName[] must match the UserAuth enum");
- Assert(port->hba);
- auth_method = port->hba->auth_method;
-
- if (auth_method < 0 || USER_AUTH_LAST < auth_method)
- {
- /* Should never happen. */
- elog(FATAL, "port has out-of-bounds UserAuth: %d", auth_method);
- }
-
- return UserAuthName[auth_method];
+ return UserAuthName[hba->auth_method];
}
signature.asc
Description: PGP signature
