I found that the patch I proposed actually threw out the baby with the 
bathwater;
rejecting all plugins is inappropriate.
So here is a revised version that only excludes the ldapdb plugin specifically:

diff -brpu openldap-2.4.28-orig/servers/slapd/sasl.c 
openldap-2.4.28/servers/slapd/sasl.c
--- openldap-2.4.28-orig/servers/slapd/sasl.c   2011-11-25 19:52:29.000000000 
+0100
+++ openldap-2.4.28/servers/slapd/sasl.c        2012-01-02 01:48:58.000000000 
+0100
@@ -67,6 +67,24 @@ char *slap_sasl_auxprops;

 #ifdef HAVE_CYRUS_SASL

+/* Do not load the ldapdb plugin */
+static int
+slap_sasl_verifyfile(
+       void *context,
+       const char *file,
+       sasl_verify_type_t type)
+{
+       int res = SASL_OK;
+
+       if (type == SASL_VRFY_PLUGIN) {
+               static const char name[] = "libldapdb.so";
+               const char * const p = strstr(file, name);
+               if (p && !strchr(p, '/'))
+                       res = SASL_CONTINUE;
+       }
+       return res;
+}
+
 /* Just use our internal auxprop by default */
 static int
 slap_sasl_getopt(
@@ -1111,6 +1129,7 @@ int slap_sasl_init( void )
        static sasl_callback_t server_callbacks[] = {
                { SASL_CB_LOG, &slap_sasl_log, NULL },
                { SASL_CB_GETOPT, &slap_sasl_getopt, NULL },
+               { SASL_CB_VERIFYFILE, &slap_sasl_verifyfile, NULL },
                { SASL_CB_LIST_END, NULL, NULL }
        };
 #endif


Reply via email to