RFR: JDK-8007607

Valerie (Yu-Ching) Peng valerie.peng at oracle.com
Fri Feb 8 20:19:11 UTC 2013


I think it's ok just to use NULL. An OOM is pretty self-explanatory. 
Most if not all invocations that I recall seeing simply use NULL.
Valerie

On 02/08/13 12:00, John Zavgren wrote:
> All:
>
> I assume that anytime a "JNI" procedure in the native code experiences an OOM (Out Of Memory) error, then it should throw an exception, by executing:  JNU_ThrowOutOfMemoryError(env, NULL);
>
> src/share/native/sun/security/jgss/wrapper/GSSLibStub.c
> src/share/native/sun/security/jgss/wrapper/NativeUtil.c
> src/share/native/sun/security/smartcardio/pcsc.c
> src/solaris/native/com/sun/security/auth/module/Solaris.c
> src/solaris/native/com/sun/security/auth/module/Unix.c
>
> If so, what messages, if any, should I pass as their second argument, instead of NULL?
>
>
>
> Thanks!
> John
> ----- Original Message -----
> From: dmitry.samersoff at oracle.com
> To: john.zavgren at oracle.com
> Cc: security-dev at openjdk.java.net
> Sent: Friday, February 8, 2013 1:35:41 PM GMT -05:00 US/Canada Eastern
> Subject: Re: RFR: JDK-8007607
>
> John,
>
>> Ideas?
> It's a JNI so just throw OOM.
>
> -Dmitry
>
>
> On 2013-02-08 21:38, John Zavgren wrote:
>> Although I agree that the name: "GSS_C_NO_CHANNEL_BINDINGS" is misleading,
>> I can't identify anything else that seems more appropriate.
>>
>> The header file:
>> /jdk8-tl/jdk/src/share/native/sun/security/jgss/wrapper/gssapi.h defines
>> GSS_C_NO_CHANNEL_BINDINGS as follows:
>> #define GSS_C_NO_CHANNEL_BINDINGS ((gss_channel_bindings_t) 0)
>>
>> The symbol matches the prototype of the function:
>>
>>      */*
>>       * Utility routine which creates a gss_channel_bindings_t structure
>>       * using the specified org.ietf.jgss.ChannelBinding object.
>>       */
>>      gss_channel_bindings_t getGSSCB(JNIEnv *env, jobject jcb) {
>>        gss_channel_bindings_t cb;
>>        jobject jinetAddr;
>>        jbyteArray value;
>>
>>        if (jcb == NULL) {
>>          return GSS_C_NO_CHANNEL_BINDINGS;
>>        }
>>          cb = malloc(sizeof(struct gss_channel_bindings_struct));
>>
>>          if(cb == NULL)
>>              return  GSS_C_NO_CHANNEL_BINDINGS;*
>>
>> There doesn't appear to be anything in our set of options that is more
>> suggestive of a memory allocation failure and the symbol:
>> GSS_C_NO_CHANNEL_BINDINGS seems to be logically correct.
>>
>> Ideas?
>>
>> On 02/06/2013 04:57 AM, Dmitry Samersoff wrote:
>>> John,
>>>
>>> Not sure GSS_C_NO_CHANNEL_BINDINGS; is correct return value for this case.
>>>
>>> I'm second to Valerie - it's better to throw OOM
>>>
>>> -Dmitry
>>>
>>>
>>> On 2013-02-06 03:44, John Zavgren wrote:
>>>> Greetings:
>>>>
>>>> I modified the native code to eliminate potential memory loss and crashes by checking the return values of malloc() and realloc() calls.
>>>>
>>>> The webrev image of these changes is visible at:
>>>> http://cr.openjdk.java.net/~jzavgren/8007607/webrev.01/
>>>>
>>>> Thanks!
>>>> John Zavgren
>>>>
>>
>> -- 
>> John Zavgren
>> john.zavgren at oracle.com
>> 603-821-0904
>> US-Burlington-MA
>>
>




More information about the security-dev mailing list