incorrect enum warning?

John Baldwin jhb at FreeBSD.org
Thu May 1 08:06:45 PDT 2003


On 01-May-2003 Dag-Erling Smorgrav wrote:
> Why does the following code in OpenPAM headers:
> 
> /*
>  * XSSO 5.4
>  */
> enum {
>         PAM_SILENT                      = 0x80000000,
>         PAM_DISALLOW_NULL_AUTHTOK       = 0x1,
>         PAM_ESTABLISH_CRED              = 0x1,
>         PAM_DELETE_CRED                 = 0x2,
>         PAM_REINITIALIZE_CRED           = 0x4,
>         PAM_REFRESH_CRED                = 0x8,
>         PAM_PRELIM_CHECK                = 0x1,
>         PAM_UPDATE_AUTHTOK              = 0x2,
>         PAM_CHANGE_EXPIRED_AUTHTOK      = 0x4
> };
> 
> cause the following warning when compiled with CSTD=c99:
> 
> /usr/src/contrib/openpam/include/security/pam_constants.h:100: warning: ISO C restricts
> enumerator values to range of `int'
> 
> when 0x80000000 is clearly within the range of 'int' on all platforms
> we support?

On an i386:

#define INT_MAX         0x7fffffff      /* max value for an int */

0x80000000 > 0x7fffffff

-- 

John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


More information about the freebsd-hackers mailing list