Great, thanks!
Valerie

On 1/4/2018 4:51 AM, Jan Kalina wrote:
Described issues was accepted into Oracle JDK issues:

1) SunNativeProvider.INSTANCE initialization: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194073 2) Uninitialized cb->initiator_address: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194630

(fixing patches are included in reports too)


On Fri, Dec 22, 2017 at 5:44 PM, Jan Kalina <jkal...@redhat.com <mailto:jkal...@redhat.com>> wrote:

    Hi, I was just able to prepare usable reproducer (attaching in ZIP
    file) and fixing patch of JDK (attaching too).
    Before I was able to make my usecase working, I has found second
    issue too - I has included it too.

    Issues and their reproducing:

    1) already described problem of wrong initialized
    SunNativeProvider.INSTANCE

    This can be reproduced by recreating GSSManager before
    createGSSContext - ProviderList.factories
    will be initialized as part of initSecContext/acceptSecContext
    which will cause using wrong initialized
    SunNativeProvider.INSTANCE and described exception.

    2) when channel binding is used SIGSEGV occure

    This can be reproduced by setting channel binding without
    initAddr/acceptAddr.
    This is caused by sending uninitialized (with random length)
    cb->initiator_address from JDK to the kerberos.
    (It is used by krb library for messages checksum calculation even
    when addrtype is GSS_C_AF_NULLADDR.)

    Attached reproducer-gss.zip reproduces both issues and attached
    patch fixes both.

    I would welcome merging into OpenJDK. (I am covered by OCA of Red Hat)

    This issue affect both tested JDKs, JKD8u121 and upstream JDK9
    from mercurial master.

    Thanks,
    Jan

    On Wed, Dec 20, 2017 at 1:42 AM, Valerie Peng
    <valerie.p...@oracle.com <mailto:valerie.p...@oracle.com>> wrote:


        I will take a look. Do you happen to have a test case that I
        can reproduce the issue?
        Thanks,
        Valerie


        On 12/14/2017 9:20 AM, Jan Kalina wrote:
        Attaching patch, which fixes described issue for me.

        On Thu, Dec 14, 2017 at 4:03 PM, Jan Kalina
        <jkal...@redhat.com <mailto:jkal...@redhat.com>> wrote:

            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