From ea866b004502de0e2dd25caaecd8cedc09cb85e9 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 23 Feb 2009 10:15:44 +0000 Subject: [PATCH] LDAP: do not fail on (&(...)) and filters git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@388 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/ldap/LdapConnection.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/java/davmail/ldap/LdapConnection.java b/src/java/davmail/ldap/LdapConnection.java index 1a30ba44..4365356c 100644 --- a/src/java/davmail/ldap/LdapConnection.java +++ b/src/java/davmail/ldap/LdapConnection.java @@ -117,6 +117,7 @@ public class LdapConnection extends AbstractConnection { static final int LDAP_SIZE_LIMIT_EXCEEDED = 4; static final int LDAP_INVALID_CREDENTIALS = 49; + static final int LDAP_FILTER_AND = 0xa0; static final int LDAP_FILTER_OR = 0xa1; // LDAP filter operators (only LDAP_FILTER_SUBSTRINGS is supported) @@ -447,7 +448,13 @@ public class LdapConnection extends AbstractConnection { int ldapFilterOperator = reqBer.parseSeq(null); parseSimpleFilter(reqBer, criteria, ldapFilterOperator); } - // simple filter + } else if (ldapFilterType == LDAP_FILTER_AND) { + DavGatewayTray.warn("Unsupported filter"); + while (reqBer.getParsePosition() < end && reqBer.bytesLeft() > 0) { + int ldapFilterOperator = reqBer.parseSeq(null); + parseSimpleFilter(reqBer, criteria, ldapFilterOperator); + } + // simple filter } else { parseSimpleFilter(reqBer, criteria, ldapFilterType); }