jenkinsci / jenkinsci/subversion-plugin

[JENKINS-1919] NPE while saving job with FishEye SSL URL with self-signed server certificate

Open
#467 0 comments 0 reactions 0 assignees View on GitHub
component:subversion-plugin imported-jira-issue priority:major resolution:unresolved
Dominant language
Java
Stars
131
Forks
275
Avg merge
12h 4m
Merged PRs (30d)
6

Description

Our FishEye server runs on SOlaris 10 behind an Apache with self-signed server

certificate.

For configuring a job with a repository browser as a connection to this FishEye

server entering the server's URL (e.g.

"https://subversion.f.ddk/fisheye/browse/vk") the following validation error is

shown next to the input field "URL":

sun.security.validator.ValidatorException: PKIX path building failed:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid

certification path to requested target

After saving the corresponding job configuration the following exception:

java.lang.NullPointerException

at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:305)

at hudson.model.Descriptor.newInstance(Descriptor.java:136)

at hudson.scm.RepositoryBrowsers.createInstance(RepositoryBrowsers.java:51)

at hudson.scm.SubversionSCM$DescriptorImpl.newInstance(SubversionSCM.java:1020)

at hudson.scm.SubversionSCM$DescriptorImpl.newInstance(SubversionSCM.java:799)

at hudson.model.Descriptor.newInstance(Descriptor.java:133)

at hudson.scm.SCMS.parseSCM(SCMS.java:37)

at hudson.model.AbstractProject.submit(AbstractProject.java:902)

at hudson.model.Project.submit(Project.java:144)

at hudson.model.FreeStyleProject.submit(FreeStyleProject.java:68)

at hudson.model.Job.doConfigSubmit(Job.java:826)

at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:301)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:103)

at org.kohsuke.stapler.Function.bindAndinvoke(Function.java:57)

at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:75)

at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)

at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:254)

at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)

at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:254)

at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:361)

at org.kohsuke.stapler.Stapler.service(Stapler.java:121)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)

at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)

at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)

at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)

at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:38)

at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:30)

at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)

at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:52)

at

hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:28)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at

org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

at

hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:42)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)

at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:44)

at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:85)

at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)

at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)

at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)

at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)

at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)

at java.lang.Thread.run(Thread.java:619)

It would be great if validation of URIs in general is more tolerant regarding

issues with certssiificates or ming proxy authentication.

Not getting access to an URI during while manipulating the configuration

shouldn't prevent saving the configuration.

---
Originally reported by tjuerge, imported from: NPE while saving job with FishEye SSL URL with self-signed server certificate


  • status: Open
  • priority: Major
  • component(s): subversion-plugin
  • resolution: Unresolved
  • votes: 0
  • watchers: 0
  • imported: 20251212-090250

Raw content of original issue

Our FishEye server runs on SOlaris 10 behind an Apache with self-signed server
certificate.
For configuring a job with a repository browser as a connection to this FishEye
server entering the server's URL (e.g.
"https://subversion.f.ddk/fisheye/browse/vk") the following validation error is
shown next to the input field "URL":

sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
certification path to requested target

After saving the corresponding job configuration the following exception:

java.lang.NullPointerException
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:305)
at hudson.model.Descriptor.newInstance(Descriptor.java:136)
at hudson.scm.RepositoryBrowsers.createInstance(RepositoryBrowsers.java:51)
at hudson.scm.SubversionSCM$DescriptorImpl.newInstance(SubversionSCM.java:1020)
at hudson.scm.SubversionSCM$DescriptorImpl.newInstance(SubversionSCM.java:799)
at hudson.model.Descriptor.newInstance(Descriptor.java:133)
at hudson.scm.SCMS.parseSCM(SCMS.java:37)
at hudson.model.AbstractProject.submit(AbstractProject.java:902)
at hudson.model.Project.submit(Project.java:144)
at hudson.model.FreeStyleProject.submit(FreeStyleProject.java:68)
at hudson.model.Job.doConfigSubmit(Job.java:826)
at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:103)
at org.kohsuke.stapler.Function.bindAndinvoke(Function.java:57)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:75)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:254)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:254)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:361)
at org.kohsuke.stapler.Stapler.service(Stapler.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:38)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:30)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:52)
at
hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:28)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at
hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:42)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:55)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:44)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:85)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.lang.Thread.run(Thread.java:619)

It would be great if validation of URIs in general is more tolerant regarding
issues with certssiificates or ming proxy authentication.
Not getting access to an URI during while manipulating the configuration
shouldn't prevent saving the configuration.

  • environment: Platform: All, OS: All

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.