Security-dev,

If we can live with "engine=keystore" happily, why not just make the whole 
string lowercase and search for "permission=java.io.filepermission"? I don't 
think there are permission types or URL names that are only different in cases. 
Although file names are case-sensitive in Unix, I doubt if any customer will 
complain if we show him info on /ETC even if what he sets is "codebase=/etc".

We can add new methods like hasCodebase(URL) and hasPermission(Class<? extends 
Permission>) to hide the search details inside Debug.

Thanks
Max

> On May 10, 2016, at 1:36 PM, Xueming Shen <xueming.s...@oracle.com> wrote:
> 
> Hi,
> 
> While testing for the attached regex changes, a fatal vm init error was 
> triggered for test
> case with -Djava.security.debug=xyz turned on, as showed in following 
> stacktrace.
> 
> It appears sun.security.util.Debug is being initialized even before the 
> lambda is ready
> for use, and unfortunately it uses j.u.regex (for its args parsing), which is 
> being migrated
> to use lambda function in the proposed regex change.
> 
> Since Debug is the only class now triggers j.u.regex -> lambda during 
> initialization, it
> is suggested to update/rewrite the related method in Debug to NOT use 
> j.u.regex to
> solve/workaround this specific initialization issue.
> 
> The webrev below has been updated to include such a change.
> 
> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/ 
> 
> The sun.security.util.Debug related change is at
> 
> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/src/java.base/share/classes/sun/security/util/Debug.java.sdiff.html
> 
> Can security-dev guys help take a look if this is an acceptable/reasonable 
> approach.
> 
> Thanks,
> Sherman
> 
> -----------------------------------------------------------------------------
>  Caused by: java.lang.ExceptionInInitializerError
> 
>  
>       at 
> jdk.internal.loader.BootLoader.loadClassOrNull(java.base/BootLoader.java:110)
>       at 
> java.lang.invoke.BoundMethodHandle$Factory$1.apply(java.base/BoundMethodHandle.java:497)
>       at 
> java.lang.invoke.BoundMethodHandle$Factory$1.apply(java.base/BoundMethodHandle.java:492)
> ...
>       at 
> java.lang.invoke.MethodHandleNatives.linkCallSite(java.base/MethodHandleNatives.java:240)
>       at java.util.regex.Pattern.<clinit>(java.base/Pattern.java:5682)
>       at sun.security.util.Debug.marshal(java.base/Debug.java:247)
>       at sun.security.util.Debug.<clinit>(java.base/Debug.java:59)
>       at 
> java.security.ProtectionDomain.<clinit>(java.base/ProtectionDomain.java:142)
>       at 
> jdk.internal.misc.InnocuousThread.<clinit>(java.base/InnocuousThread.java:129)
>       at 
> jdk.internal.ref.CleanerFactory$1$1.run(java.base/CleanerFactory.java:48)
>       at 
> jdk.internal.ref.CleanerFactory$1$1.run(java.base/CleanerFactory.java:45)
>       at java.security.AccessController.doPrivileged(java.base/Native Method)
>       at 
> jdk.internal.ref.CleanerFactory$1.newThread(java.base/CleanerFactory.java:45)
>       at jdk.internal.ref.CleanerImpl.start(java.base/CleanerImpl.java:116)
>       at java.lang.ref.Cleaner.create(java.base/Cleaner.java:203)
>       at 
> jdk.internal.ref.CleanerFactory.<clinit>(java.base/CleanerFactory.java:42)
>       at sun.nio.fs.NativeBuffer.<init>(java.base/NativeBuffer.java:60)
>       at 
> sun.nio.fs.NativeBuffers.allocNativeBuffer(java.base/NativeBuffers.java:49)
>       at 
> sun.nio.fs.UnixNativeDispatcher.copyToNativeBuffer(java.base/UnixNativeDispatcher.java:44)
>       at 
> sun.nio.fs.UnixNativeDispatcher.stat(java.base/UnixNativeDispatcher.java:306)
>       at 
> sun.nio.fs.UnixFileSystemProvider.isRegularFile(java.base/UnixFileSystemProvider.java:514)
>       at java.nio.file.Files.isRegularFile(java.base/Files.java:2244)
>       at 
> java.lang.module.ModuleFinder.ofSystem(java.base/ModuleFinder.java:165)
>       at 
> jdk.internal.module.ModuleBootstrap.boot(java.base/ModuleBootstrap.java:105)
>       at java.lang.System.initPhase2(java.base/System.java:1924)
> 
> ---------------------------------------------------------------------------------
> 
> 
> On 3/18/16 1:05 PM, Xueming Shen wrote:
>> Hi, 
>> 
>> There are couple regex related changes waiting for review. I have pull them 
>> together here (with the notes) to make it easy to review. 
>> 
>> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/ 
>> 
>> (1) Exponential backtracking 
>> 
>> Note: 
>> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/backtracking
>> 
>> https://bugs.openjdk.java.net/browse/JDK-6328855 
>> https://bugs.openjdk.java.net/browse/JDK-6192895 
>> https://bugs.openjdk.java.net/browse/JDK-6345469 
>> https://bugs.openjdk.java.net/browse/JDK-6988218 
>> https://bugs.openjdk.java.net/browse/JDK-6693451 
>> https://bugs.openjdk.java.net/browse/JDK-7006761 
>> https://bugs.openjdk.java.net/browse/JDK-8140212 
>> 
>> (2) Anonymous class to lambda function cleanup 
>> 
>> Note: 
>> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/lambdafunction
>> 
>> https://bugs.openjdk.java.net/browse/JDK-8151481 
>> https://bugs.openjdk.java.net/browse/JDK-6609854 
>> 
>> (3) Canonical Equivalents 
>> 
>> Note: 
>> http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/canonEQ
>> 
>> https://bugs.openjdk.java.net/browse/JDK-4916384 
>> https://bugs.openjdk.java.net/browse/JDK-4867170 
>> https://bugs.openjdk.java.net/browse/JDK-6995635 
>> https://bugs.openjdk.java.net/browse/JDK-6728861 
>> https://bugs.openjdk.java.net/browse/JDK-6736245 
>> https://bugs.openjdk.java.net/browse/JDK-7080302 
>> 
>> Thanks 
>> Sherman 
> 

Reply via email to