On 16/06/15 18:49, Thomas Lußnig wrote:
Hi,

two points that come directly to my mind when i checked the code:

1) An Error in the description.

+            // If plast >= plen then restrictedPkg is longer than pkg by at
+            // least one char. This means pkg cannot start with restrictedPkg,
+            // since restrictedPkg will be longer than pkg.
+            //
+            // Similarly if plast != plen, then pkg + "." cannot be the same
+            // as restrictedPkg, since pkg + "." will have a different length
+            // than restrictedPkg.

        If this would be correct then where would never be an match because
        !(plast >= plen) && !(plast != plen) must be true for an possible match.
        That could be rewriten to (plast < plen) && (plast == plen) and this is 
always FALSE.

Hi Thomas - I believe the description is correct:

plast >= plen  <=> restrictedPkg.length() -1 >= pkg.length()
               <=> restrictedPkg.length() >= pkg.length() + 1
which does means pkg.startsWith(restrictedPkg) == false

plast != plen  <=> restrictedPkg.length() -1 != pkg.length()
               <=> restrictedPkg.length() != pkg.length() + 1
which does means that restrictedPkg.equals(pkg + ".") == false


2) Would it be worth to use the state Engine instead of looping over the array ?

When I investigated the issue I found that using the state engine only
brought a marginal improvement - compared to what is proposed here.
Given the additional complexity that the state engine brings - I
believe that looping over the array is the appropriate choice.

The state engine is still in the test in case someone decides one
day that the marginal improvements are worthy ;-)

best regards,

-- daniel



Gruß Thomas



On 16.06.2015 16:54, Sean Mullan wrote:
This is the sixth in a series of fixes for JEP 232 (Improve Secure
Application Performance) [1].

webrev: http://cr.openjdk.java.net/~mullan/webrevs/8072692/webrev.00/
bug: https://bugs.openjdk.java.net/browse/JDK-8072692

This fix adds several optimizations to the package matching algorithm
used by the SecurityManager.checkPackageAcccess method. These
improvements result in a 5-7x increase in throughput of this method. A
performance chart has been attached to the bug with more information.

A new test is included which uses a state machine to verify that the
matching algorithm is working correctly.

Special thanks to Daniel Fuchs for contributing this fix and the test.

Thanks,
Sean

[1] http://openjdk.java.net/jeps/232


Reply via email to