[jboss-jira] [JBoss JIRA] (WFLY-7964) Coverity static analysis: Resource leak in LdapSecurityRealm (Elytron)

Martin Choma (JIRA) issues at jboss.org
Wed Jan 25 07:48:00 EST 2017


Martin Choma created WFLY-7964:
----------------------------------

             Summary: Coverity static analysis: Resource leak in LdapSecurityRealm (Elytron)
                 Key: WFLY-7964
                 URL: https://issues.jboss.org/browse/WFLY-7964
             Project: WildFly
          Issue Type: Bug
          Components: Security
            Reporter: Martin Choma
            Assignee: Darran Lofthouse
            Priority: Critical


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 would be safer to call close() explicitelly.

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.

{code:java|title=LdapSecurityRealm.java}
try (
Stream<LdapIdentity> identityStream = ldapSearch.search(context)
    .map(result -> new LdapIdentity(result.getNameInNamespace()))
     ) {
        LdapIdentity identity = identityStream.findFirst().orElse(null);
{code}

https://scan7.coverity.com/reports.htm#v23632/p11778/fileInstanceId=8553877&defectInstanceId=2139014&mergedDefectId=1397422





--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list