Re: hba.c:3160:18: warning: comparison of unsigned enum expression - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: hba.c:3160:18: warning: comparison of unsigned enum expression
Date
Msg-id CABUevEy6q9M37FV=y5DNAhE0EfU2godeVY=k_goibOsr+dtQgw@mail.gmail.com
Whole thread Raw
In response to hba.c:3160:18: warning: comparison of unsigned enum expression  (Erik Rijkers <er@xs4all.nl>)
Responses Re: hba.c:3160:18: warning: comparison of unsigned enum expression  (Magnus Hagander <magnus@hagander.net>)
Re: hba.c:3160:18: warning: comparison of unsigned enum expression  (Michael Paquier <michael@paquier.xyz>)
List pgsql-hackers
On Wed, Apr 7, 2021 at 1:01 PM Erik Rijkers <er@xs4all.nl> wrote:
>
> Recently (last day or so), I get this warning from gcc 10.2:
>
> -----
> hba.c:3160:18: warning: comparison of unsigned enum expression < 0 is always false [-Wtautological-compare]
>         if (auth_method < 0 || USER_AUTH_LAST < auth_method)
>             ~~~~~~~~~~~ ^ ~
> 1 warning generated.
> -----

This one is from 9afffcb833d3c5e59a328a2af674fac7e7334fc1 (adding
Jacob and Michael to cc)

And it makes sense to give warning on that. AuthMethod is an enum. It
can by definition not have a value that's not in the enum. That check
simply seems wrong/unnecessary.

The only other use fo USER_AUTH_LAST is in fill_hba_line() which also
gets the name of the auth. That one uses :
        StaticAssertStmt(lengthof(UserAuthName) == USER_AUTH_LAST + 1,
                         "UserAuthName[] must match the UserAuth enum");

Which seems like a more reasonable check.

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?

-- 
 Magnus Hagander
 Me: https://www.hagander.net/
 Work: https://www.redpill-linpro.com/



pgsql-hackers by date:

Previous
From: Erik Rijkers
Date:
Subject: hba.c:3160:18: warning: comparison of unsigned enum expression
Next
From: Thomas Munro
Date:
Subject: Re: WIP: WAL prefetch (another approach)