Skip to content

SpringSecurityCoreVersion.java getSpringVersion() method does not close stream. #9041

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jimblye opened this issue Sep 23, 2020 · 1 comment
Assignees
Labels
in: core An issue in spring-security-core status: backported An issue that has been backported to maintenance branches type: bug A general bug

Comments

@jimblye
Copy link

jimblye commented Sep 23, 2020

Describe the bug

The following method in SpringSecurityCoreVersion.java does not close the stream it opens. This keeps the file locked on Windows:

private static String getSpringVersion() {
  Properties properties = new Properties();
  try {
   properties.load(SpringSecurityCoreVersion.class.getClassLoader()
     .getResourceAsStream("META-INF/spring-security.versions"));
  }
  catch (IOException | NullPointerException ex) {
    return null;
  }
    return properties.getProperty("org.springframework:spring-core");
 }

This causes a problem when using WebSphere Liberty. When customer tries to update the application, spring-security-core-5.2.1.RELEASE.jar is locked.

I traced opens and closes of ZipFiles. The stack trace below is for the open that was never closed :

[err] open of ZipFile D:\WebSphere\Liberty\usr\servers\server1\workarea\org.eclipse.osgi\59\data\cache\com.ibm.ws.app.manager_67.cache\WEB-INF\lib\ spring-security-core-5.2.1.RELEASE.jar : -1020332453
[err] java.util.zip.ZipFile.dumpstack(ZipFile.java:160)
[err] java.util.zip.ZipFile.dumpstack(ZipFile.java:160)
[err] java.util.zip.ZipFile.(ZipFile.java:295)
[err] java.util.zip.ZipFile.(ZipFile.java:224)
[err] java.util.zip.ZipFile.(ZipFile.java:238)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileUtils$1.run(ZipFileUtils.java:39)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileUtils$1.run(ZipFileUtils.java:36)
[err] java.security.AccessController.doPrivileged(AccessController.java:696)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileUtils.openZipFile(ZipFileUtils.java:36)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileUtils.openZipFile(ZipFileUtils.java:28)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileData.openZipFile(ZipFileData.java:728)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileData.openZipFile(ZipFileData.java:689)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileReaper.open(ZipFileReaper.java:1579)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileReaper.open(ZipFileReaper.java:1526)
[err] com.ibm.ws.artifact.zip.cache.internal.ZipFileHandleImpl.open(ZipFileHandleImpl.java:164)
[err] com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl.getInputStreamInternal(WSJarURLStreamHandler.java:262)
[err] com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl.getInputStream(WSJarURLStreamHandler.java:249)
[err] java.net.URL.openStream(URL.java:1057)
[err] java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:699)
[err] org.springframework.security.core.SpringSecurityCoreVersion.getSpringVersion(SpringSecurityCoreVersion.java:112)
[err] org.springframework.security.core.SpringSecurityCoreVersion.(SpringSecurityCoreVersion.java:46)
[err] org.springframework.security.config.SecurityNamespaceHandler.(SecurityNamespaceHandler.java:68)
[err] sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[err] sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)
[err] sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
[err] java.lang.reflect.Constructor.newInstance(Constructor.java:437)
[err] org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:200)
[err] org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:135)
[err] org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:134)
[err] org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1386)
[err] org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1371)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:514)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:394)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:337)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:305)
[err] org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
[err] org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:234)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:191)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:176)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)
[err] org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:514)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:394)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:337)
[err] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:305)
[err] org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
[err] org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)
[err] org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195)
[err] org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
[err] org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
[err] org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133)
[err] org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:637)
[err] org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)
[err] org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401)
[err] org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292)
[err] org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
[err] com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2433)
[err] com.ibm.ws.webcontainer31.osgi.webapp.WebApp31.notifyServletContextCreated(WebApp31.java:514)
[err] com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:1037)
[err] com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:6663)
[err] com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApp(DynamicVirtualHost.java:467)
[err] com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApplication(DynamicVirtualHost.java:462)
[err] com.ibm.ws.webcontainer.osgi.WebContainer.startWebApplication(WebContainer.java:1175)
[err] com.ibm.ws.webcontainer.osgi.WebContainer.access$100(WebContainer.java:109)
[err] com.ibm.ws.webcontainer.osgi.WebContainer$3.run(WebContainer.java:975)
[err] com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:239)
[err] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:522)
[err] java.util.concurrent.FutureTask.run(FutureTask.java:277)
[err] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)
[err] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[err] java.lang.Thread.run(Thread.java:811)

@jimblye jimblye added status: waiting-for-triage An issue we've not yet triaged type: bug A general bug labels Sep 23, 2020
@jzheaux jzheaux self-assigned this Sep 24, 2020
@jzheaux jzheaux added in: core An issue in spring-security-core and removed status: waiting-for-triage An issue we've not yet triaged labels Sep 24, 2020
@jzheaux
Copy link
Contributor

jzheaux commented Sep 24, 2020

This makes sense to me, @jimblye. Would you be able to submit a PR to address the issue?

MeTPP pushed a commit to MeTPP/spring-security that referenced this issue Sep 29, 2020
jzheaux pushed a commit that referenced this issue Sep 29, 2020
@spring-projects-issues spring-projects-issues added the status: backported An issue that has been backported to maintenance branches label Sep 29, 2020
jzheaux pushed a commit that referenced this issue Sep 29, 2020
jzheaux pushed a commit that referenced this issue Sep 29, 2020
jzheaux pushed a commit that referenced this issue Sep 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core An issue in spring-security-core status: backported An issue that has been backported to maintenance branches type: bug A general bug
Projects
None yet
Development

No branches or pull requests

3 participants