8002344 code review request: (was Re: [PATCH] for bug 2376501: Krb5LoginModule config class does not return proper KDC list from DNS)
Dmitry Samersoff
dmitry.samersoff at oracle.com
Tue Nov 13 12:18:03 UTC 2012
Weijun,
1.
> That's line 288. Are you suggesting that port string can be
> non-numeric and need a check?
Port could be not a default kerberos port but another one - e.g.
customer can setup kerberos on port *1* if they want.
Customer allowed to use service name here instead of numeric port number
if my memory is not bogus.
2.
> shadow the real one by prepending it to the bootclasspath.
jtreg allows you to change boot classpath in othervm mode
e.g. :
@run main/othervm -Xbootclasspath/a:../classes/serviceability
-XX:+UnlockDiagnosticVMOptions ... ParserTest
-Dmitry
On 2012-11-13 16:07, Weijun Wang wrote:
>
>
> 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
>>>>>>>
>>>>>
>>>>>
>>>>>
>>
>>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* Give Rabbit time, and he'll always get the answer
More information about the security-dev
mailing list