diff --git a/src/java/davmail/ldap/LdapConnection.java b/src/java/davmail/ldap/LdapConnection.java index 960d77d8..418866b8 100644 --- a/src/java/davmail/ldap/LdapConnection.java +++ b/src/java/davmail/ldap/LdapConnection.java @@ -576,6 +576,9 @@ public class LdapConnection extends AbstractConnection { Map properties = new HashMap(); properties.put("javax.security.sasl.qop", "auth,auth-int"); saslServer = Sasl.createSaslServer(mechanism, "ldap", client.getLocalAddress().getHostAddress(), properties, callbackHandler); + if (saslServer == null) { + throw new IOException("Unable to create SASL server for mechanism "+mechanism); + } serverResponse = saslServer.evaluateResponse(EMPTY_BYTE_ARRAY); status = LDAP_SASL_BIND_IN_PROGRESS; } @@ -827,8 +830,7 @@ public class LdapConnection extends AbstractConnection { protected String getServiceInfo() throws UnknownHostException { if (serviceInfo == null) { - StringBuilder buffer = new StringBuilder(); - buffer.append("" + + serviceInfo = ("" + "" + "" + "" + @@ -847,9 +849,7 @@ public class LdapConnection extends AbstractConnection { "enabled" + "" + "port" + - ""); - buffer.append(Settings.getProperty("davmail.caldavPort")); - buffer.append("" + + "") + Settings.getProperty("davmail.caldavPort") + "" + "" + "https" + "" + @@ -860,9 +860,7 @@ public class LdapConnection extends AbstractConnection { "" + "" + "hostname" + - ""); - buffer.append(getCurrentHostName()); - buffer.append("" + + "" + getCurrentHostName() + "" + "serviceInfo" + "" + "calendar" + @@ -889,8 +887,7 @@ public class LdapConnection extends AbstractConnection { "" + "" + "" + - ""); - serviceInfo = buffer.toString(); + ""; } return serviceInfo; } @@ -954,7 +951,7 @@ public class LdapConnection extends AbstractConnection { if (values instanceof String) { responseBer.encodeString((String) values, isLdapV3()); } else if (values instanceof List) { - for (Object value : (List) values) { + for (Object value : (Iterable) values) { responseBer.encodeString((String) value, isLdapV3()); } } else { @@ -1286,7 +1283,7 @@ public class LdapConnection extends AbstractConnection { } else if ((operator == LDAP_FILTER_EQUALITY) && personAttributeValue.equalsIgnoreCase(value)) { // Found an exact match return true; - } else if ((operator == LDAP_FILTER_SUBSTRINGS) && (personAttributeValue.toLowerCase().indexOf(value.toLowerCase()) >= 0)) { + } else if ((operator == LDAP_FILTER_SUBSTRINGS) && (personAttributeValue.toLowerCase().contains(value.toLowerCase()))) { // Found a substring match return true; } @@ -1421,14 +1418,14 @@ public class LdapConnection extends AbstractConnection { DavGatewayTray.debug(new BundleMessage("LOG_LDAP_REQ_SEARCH", currentMessageId, dn, scope, sizeLimit, timelimit, ldapFilter.toString(), returningAttributes)); if (scope == SCOPE_BASE_OBJECT) { - if ("".equals(dn)) { + if (dn != null && dn.length() == 0) { size = 1; sendRootDSE(currentMessageId); } else if (BASE_CONTEXT.equals(dn)) { size = 1; // root sendBaseContext(currentMessageId); - } else if (dn.startsWith("uid=") && dn.indexOf(',') > 0) { + } else if (dn != null && dn.startsWith("uid=") && dn.indexOf(',') > 0) { if (session != null) { // single user request String uid = dn.substring("uid=".length(), dn.indexOf(',')); @@ -1437,6 +1434,7 @@ public class LdapConnection extends AbstractConnection { // first search in contact try { // check if this is a contact uid + //noinspection ResultOfMethodCallIgnored Integer.parseInt(uid); persons = contactFind(session.isEqualTo("imapUid", uid), returningAttributes, sizeLimit); } catch (NumberFormatException e) {