-
Bug
-
Resolution: Done
-
Critical
-
7.1.0.DR11
Coverity static-analysis scan found resource leak in LdapSecurityRealm.getIdentity().
It has to be in try-with-resources, because Stream<LdapIdentity> has registered close handler, where NamingEnumeration.close() is called. Looking into one possible implementation http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/com/sun/jndi/ldap/LdapNamingEnumeration.java#LdapNamingEnumeration It is good close() is called.
However chained stream statement is used in try, which cause 2 Stream objects to be created. But only one of them is closed. Stream created by ldapSearch.search(context) (with exlicitely registered close handler) is not closed.
try ( Stream<LdapIdentity> identityStream = ldapSearch.search(context) .map(result -> new LdapIdentity(result.getNameInNamespace())) ) { LdapIdentity identity = identityStream.findFirst().orElse(null);
- is cloned by
-
ELY-924 Coverity static analysis: Resource leak in LdapSecurityRealm (Elytron)
- Resolved