Strange error when compiling minimal GSSAPI application
Benjamin Kaduk
kaduk at MIT.EDU
Sat Mar 16 20:29:56 UTC 2013
On Sat, 16 Mar 2013, Elias Mårtenson wrote:
> Is there a problem with the GSSAPI implementation in FreeBSD?
There might be; I can't remember if I had trouble with it in my current
application even before I started using the gss_pseudo_random feature
which it does not support (which caused me to switch to the MIT krb5
implementation).
> I'm trying to compile a minimal application that does nothing more than
> including the file gssapi/gssapi_krb5.h:
>
> #include <gssapi/gssapi_krb5.h>
>
> int main(void)
> {
> return 0;
> }
You do not mention which version of FreeBSD you are using.
> When compiling this with "gcc foo.c" I get the following error:
>
> In file included from foo.c:1:
> /usr/include/gssapi/gssapi_krb5.h:139: error: expected declaration
> specifiers or '...' before 'time_t'
I find that clang's warning/error messages are frequently more helpful
than gcc's. Running the same experiment on my 10-current (r247267) setup
I get a somewhat different error:
/usr/include/gssapi/gssapi_krb5.h:56: error: expected '=', ',', ';', 'asm'
or '__attribute__' before 'extern'
It seems that GSSAPI_CPP_START is never defined, for one.
> I have to admit that I'm a bit stumped as to why I get the error message in
> the first place. The line in question looks like this:
>
> OM_uint32
> gsskrb5_extract_authtime_from_sec_context(OM_uint32 *, gss_ctx_id_t,
> time_t *);
>
> I checked the preprocessor output and there are indeed correct typedefs for
> OM_uint32, gss_ctx_id_t and time_t, so I can't really see why this error
> would occur.
The previous line may also be relevant. You do not have any
GSSAPI_LIB_FUNCTION or GSSAPI_LIB_CALL macros in the type specification of
the function, though? (I do.)
> In any case, given the import program, this behaviour isn't really correct
> as far as I can tell.
>
> Any input on this?
The provided gssapi_krb5 support is certainly suboptimal -- including the
header at all gives a warning that it uses the deprecated path "gssapi.h"
to get the generic gssapi declarations. Might be, it needs further love.
-Ben Kaduk
More information about the freebsd-current
mailing list