<div dir="ltr"><div><div><div><div><div>I has found bug in SunNativeProvider:<br><br></div>When debug messages are enabled, JDK confirms GSS library was loaded with mechs:<br><br>[GSSLibStub_init] libName=/usr/lib64/libgssapi_krb5.so.2.2<br>SunNativeGSS: Loaded GSS library: /usr/lib64/libgssapi_krb5.so.2.2<br>SunNativeGSS: Native MF for 1.2.840.113554.1.2.2<br>SunNativeGSS: Native MF for 1.3.6.1.5.2.5<br>SunNativeGSS: Native MF for 1.3.6.1.5.5.2<br><br></div>But when I try to use it, it claims mechanism with given OID are not supported:<br><br>GSSException: Provider SunNativeGSS does not support mechanism 1.2.840.113554.1.2.2<br>    at java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:253)<br>    at java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:209)<br>    at java.security.jgss/sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:234)<br>    at java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:337)<br>    at java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:302)<br><br></div><b>When I has try to debug it, I has found the SunNativeProvider is created in two instances:</b><br><br></div>First instance is created on initialization of SunNativeProvider.INSTANCE, but it is BEFORE</div><div>the mechs are passed into SunNativeProvider.MECH_MAP. The second instance is created</div><div>correctly in ProviderList constructor.</div><div><br></div><div>The problem is, in some situations is used the too soon created SunNativeProvider.INSTANCE,</div><div>so the to call throws exception above.<br></div><div><div><div><div><br></div><div><b>I think sufficient fix would be to move SunNativeProvider.INSTANCE declaration after</b></div><div><b>the static constructor (filling the </b><b>MECH_MAP) in SunNativeProvider file.</b></div><div><br></div><div>Would be possible to fix this?</div><div>Should I send a patch?</div><br><div><div><div>Thanks</div><div>Jan Kalina<br></div></div></div></div></div></div></div>