ClassCastException when using repository access strategy

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Minor
    • None
    • Environment:
      Jenkins: 2.528.1
      OS: Linux - 6.1.153-175.280.amzn2023.x86_64
      Java: 21.0.8 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)

      github-branch-source:1917.v9ee8a_39b_3d0d

      The following error occurs when we set a repository access strategy on a github app credential:

      hudson.remoting.ProxyException: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Enum (java.lang.String and java.lang.Enum are in module java.base of loader 'bootstrap')
      		at PluginClassLoader for github-api//org.kohsuke.github.GHAppCreateTokenBuilder.permissions(GHAppCreateTokenBuilder.java:94)
      		at PluginClassLoader for github-branch-source//org.jenkinsci.plugins.github_branch_source.GitHubAppCredentials.generateAppInstallationToken(GitHubAppCredentials.java:331)
      		at PluginClassLoader for github-branch-source//org.jenkinsci.plugins.github_branch_source.GitHubAppCredentials$DelegatingGitHubAppCredentials$GetToken.call(GitHubAppCredentials.java:768)
      		at PluginClassLoader for github-branch-source//org.jenkinsci.plugins.github_branch_source.GitHubAppCredentials$DelegatingGitHubAppCredentials$GetToken.call(GitHubAppCredentials.java:753)
      		at hudson.remoting.UserRequest.perform(UserRequest.java:225)
      		at hudson.remoting.UserRequest.perform(UserRequest.java:50)
      		at hudson.remoting.Request$2.run(Request.java:391)
      		at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:81)
      		at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18)
      		at hudson.remoting.CallableDecoratorList.lambda$applyDecorator$0(CallableDecoratorList.java:21)
      		at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
      		at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80)
      		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
      		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

      It seems this is a bug in https://github.com/jenkinsci/github-branch-source-plugin/blob/9ee8a39b3d0d7f201187b0013d8d5daf3a37a047/src/main/java/org/jenkinsci/plugins/github_branch_source/GitHubAppCredentials.java#L775 where an improper cast is done from JSONObject to Map<String, GHPermissionType>. At best it's probably safe to say Map<String, String>, but the map value has to be deserialized back to the GHPermissionType enum.

            Assignee:
            Unassigned
            Reporter:
            Thomas
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: