8002344 code review request: (was Re: [PATCH] for bug 2376501: Krb5LoginModule config class does not return proper KDC list from DNS)

Weijun Wang weijun.wang at oracle.com
Tue Nov 13 12:07:16 UTC 2012



On 11/13/2012 07:44 PM, Dmitry Samersoff wrote:
> Weijun,
>
> Config.java:1162
>       This code is unclear to me.
>       if srvs[i] could be "" this code could insert extra space in
>       the middle of kdcs string.

It should never be empty. KrbServiceLocator.java:281 makes sure it's a 
valid DNS SRV record.

>
>       if srvc[i] couldn't be empty we can return null just
>       after line 1160  if srvs.length == 0

Yes, we can.

>
> KrbServiceLocator.java:285
>
>      Kerberos could be run on non standard port - rare case but
>      AFAIK we don't limit it. So it's better to use parseInt here.

That's line 288. Are you suggesting that port string can be non-numeric 
and need a check?

>
> dns.sh:
> 	Why we need Shell script here?

I cannot use the real NamingManager inside JDK because it will attempt 
to access a real DNS server, thus I write my own fake provider and 
shadow the real one by prepending it to the bootclasspath.

Thanks
Max


>
> Regards,
> -Dmitry
>
>
>
> On 2012-11-13 15:05, Weijun Wang wrote:
>> Ping again.
>>
>> The webrev contains codes by myself so I need another reviewer.
>>
>> Thanks
>> Max
>>
>>
>> On 11/09/2012 08:38 AM, Weijun Wang wrote:
>>> Hi Severin
>>>
>>> I've created an OpenJDK bug and created a new webrev:
>>>
>>>      http://cr.openjdk.java.net/~weijun/8002344/webrev.00/
>>>
>>> The Config.java change is identical to yours, and I added a small tweak
>>> in KrbServiceLocator, and a quite ugly regression test.
>>>
>>> Anyone can review all the changes?
>>>
>>> After the code review, I'll push the change to tl/jdk. I don't see an
>>> OpenJDK user id for you at http://db.openjdk.java.net/people, so I add
>>> your name in
>>>
>>>     Contributed-by: Severin Gehwolf <sgehwolf at redhat.com>
>>>
>>> Thanks
>>> Max
>>>
>>>
>>> On 11/08/2012 11:46 PM, Severin Gehwolf wrote:
>>>> Hi Max,
>>>>
>>>> Thanks for the review!
>>>>
>>>> On Wed, 2012-11-07 at 08:52 +0800, Weijun Wang wrote:
>>>>> The fix looks fine. There is one place it might get enhanced:
>>>>>
>>>>>            if (value.charAt(j) == ':') {
>>>>>                kdcs = (value.substring(0, j)).trim();
>>>>>            }
>>>>>
>>>>> So this changes a.com:88 to a.com. If the port is really 88, it's OK.
>>>>> Otherwise, info gets lost. Maybe we can keep the whole string.
>>>>
>>>> I've removed the entire loop which strips the port from the returned
>>>> record. Updated webrev is here:
>>>>
>>>> http://jerboaa.fedorapeople.org/bugs/openjdk/2376501/webrev.1/
>>>>
>>>>> BTW, are you OK with contributing the fix into OpenJDK main repo?
>>>>
>>>> Yes, of course :) Just let me know what's to be done to get it pushed.
>>>>
>>>> Cheers,
>>>> Severin
>>>>
>>>>> On 11/06/2012 11:08 PM, Severin Gehwolf wrote:
>>>>>> Hi,
>>>>>>
>>>>>> In Config.java, line 1234 in method getKDCFromDNS(String realm)
>>>>>> there is
>>>>>> a loop which discards earlier values of KDCs returned rather than
>>>>>> concatenating them. This results in a behaviour where only one KDC
>>>>>> in a
>>>>>> seemingly random fashion is returned. In fact, the KDC returned
>>>>>> depends
>>>>>> on the order which KrbServiceLocator.getKerberosService(realm, "_udp")
>>>>>> returns the servers. The correct behaviour should be to return a
>>>>>> String
>>>>>> containing ALL KDCs available via DNS (separated by spaces).
>>>>>>
>>>>>> The webrev is here:
>>>>>> http://jerboaa.fedorapeople.org/bugs/openjdk/2376501/webrev/
>>>>>>
>>>>>> Comments and suggestions very welcome!
>>>>>>
>>>>>> Thanks,
>>>>>> Severin
>>>>>>
>>>>
>>>>
>>>>
>
>



More information about the security-dev mailing list