-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Windows
When running under Windows (to trigger this code), and when you are unlucky enough to have a rootPath starting with E, the regex will contains two
E, where only one is expected to close the
Q for the quoting. This is visible in every tests from jenkins.security.s2m.AdminFilePathFilterTest.
This occured in https://github.com/jenkinsci/jenkins/pull/3972.
Stacktrace:
Invalid filter rule line: deny all \QC:\Jenkins\workspace\ENKINS-56575_rest_client_restart\test\target\j h499499801099785285\E\\secrets($|\\.*) java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 67 \QC:\Jenkins\workspace\ENKINS-56575_rest_client_restart\test\target\j h499499801099785285\E\\secrets($|\\.*) ^ at java.util.regex.Pattern.error(Pattern.java:1957) at java.util.regex.Pattern.escape(Pattern.java:2473) at java.util.regex.Pattern.atom(Pattern.java:2200) at java.util.regex.Pattern.sequence(Pattern.java:2132) at java.util.regex.Pattern.expr(Pattern.java:1998) at java.util.regex.Pattern.compile(Pattern.java:1698) at java.util.regex.Pattern.<init>(Pattern.java:1351) at java.util.regex.Pattern.compile(Pattern.java:1028) at jenkins.security.s2m.FilePathRuleConfig.parse(FilePathRuleConfig.java:57) at jenkins.security.s2m.FilePathRuleConfig.parse(FilePathRuleConfig.java:22) at jenkins.security.s2m.ConfigDirectory.load(ConfigDirectory.java:50) at jenkins.security.s2m.ConfigFile.get(ConfigFile.java:111) at jenkins.security.s2m.FilePathRuleConfig.checkFileAccess(FilePathRuleConfig.java:81) at jenkins.security.s2m.AdminWhitelistRule.checkFileAccess(AdminWhitelistRule.java:158) at jenkins.security.s2m.AdminFilePathFilterTest.matchBuildDir(AdminFilePathFilterTest.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:554) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:748)