Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-48108

isMoreSpecific fails in script security for overloads

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • script-security-plugin
    • None
    • Jenkins 2.89

      I have the following methods:

      def executeCake(String target, String configuration, Boolean failOnError, String... arguments) {
          // Some fancy logic
      }
      def executeCake(String target, String configuration, String... arguments) {
          executeCake(target, configuration, true, arguments)
      }

      Now when running this in Jenkins, it fails to find the correct method and ends in the following exception:

      java.lang.IllegalStateException: cannot compare public java.lang.Object project.Utilities.executeCake(java.lang.String,java.lang.String,java.lang.Boolean,java.lang.String[]) to public java.lang.Object project.Utilities.executeCake(java.lang.String,java.lang.String,java.lang.String[])
       at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovyCallSiteSelector.isMoreSpecific(GroovyCallSiteSelector.java:250)
       at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovyCallSiteSelector.findMatchingMethod(GroovyCallSiteSelector.java:196)
       at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovyCallSiteSelector.method(GroovyCallSiteSelector.java:146)
       at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:87)
       at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)
       at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)
       at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
       at WorkflowScript.executeCake(WorkflowScript:164)
       at WorkflowScript.run(WorkflowScript:83)
      

      This is probably due to an incomplete implementation of choosing the most specific method: 

      https://github.com/jenkinsci/script-security-plugin/blob/5f3851062f4fd9431f4eb20c1e55748ef83c4ac8/src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/GroovyCallSiteSelector.java#L241

            Unassigned Unassigned
            roemer Roman Bäriswyl
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: