I has found bug in SunNativeProvider:

When debug messages are enabled, JDK confirms GSS library was loaded with
mechs:

[GSSLibStub_init] libName=/usr/lib64/libgssapi_krb5.so.2.2
SunNativeGSS: Loaded GSS library: /usr/lib64/libgssapi_krb5.so.2.2
SunNativeGSS: Native MF for 1.2.840.113554.1.2.2
SunNativeGSS: Native MF for 1.3.6.1.5.2.5
SunNativeGSS: Native MF for 1.3.6.1.5.5.2

But when I try to use it, it claims mechanism with given OID are not
supported:

GSSException: Provider SunNativeGSS does not support mechanism
1.2.840.113554.1.2.2
    at
java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:253)
    at
java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:209)
    at
java.security.jgss/sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:234)
    at
java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:337)
    at
java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:302)

*When I has try to debug it, I has found the SunNativeProvider is created
in two instances:*

First instance is created on initialization of SunNativeProvider.INSTANCE,
but it is BEFORE
the mechs are passed into SunNativeProvider.MECH_MAP. The second instance
is created
correctly in ProviderList constructor.

The problem is, in some situations is used the too soon created
SunNativeProvider.INSTANCE,
so the to call throws exception above.

*I think sufficient fix would be to move SunNativeProvider.INSTANCE
declaration after*
*the static constructor (filling the **MECH_MAP) in SunNativeProvider file.*

Would be possible to fix this?
Should I send a patch?

Thanks
Jan Kalina

Reply via email to