diff --git a/spring-ldap/src/main/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessor.java b/spring-ldap/src/main/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessor.java index e9b9fdee..58428995 100644 --- a/spring-ldap/src/main/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessor.java +++ b/spring-ldap/src/main/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessor.java @@ -67,6 +67,9 @@ public abstract class AbstractRequestControlDirContextProcessor implements } Control[] requestControls = ldapContext.getRequestControls(); + if (requestControls == null) { + requestControls = new Control[0]; + } Control newControl = createRequestControl(); Control[] newControls = new Control[requestControls.length + 1]; diff --git a/spring-ldap/src/test/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessorTest.java b/spring-ldap/src/test/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessorTest.java index cff82ba0..c6e8258c 100644 --- a/spring-ldap/src/test/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessorTest.java +++ b/spring-ldap/src/test/java/org/springframework/ldap/control/AbstractRequestControlDirContextProcessorTest.java @@ -134,6 +134,20 @@ public class AbstractRequestControlDirContextProcessorTest extends TestCase { verify(); } + public void testPreProcess_NullControls() throws NamingException { + ldapContextControl.setDefaultMatcher(MockControl.ARRAY_MATCHER); + ldapContextControl.expectAndDefaultReturn(ldapContextMock + .getRequestControls(), null); + ldapContextMock + .setRequestControls(new Control[] { requestControlMock }); + + replay(); + + tested.preProcess(ldapContextMock); + + verify(); + } + public void testPreProcess_NotLdapContext() throws Exception { try { tested.preProcess(dirContextMock);