-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Hm my patch wasn't ok, an updated is attached. The previous patch had
the wrong configuration file location. And used the wrong callback
function to set the configuration path. (My first testing did go ok, but
I didn't remove the /usr/lib/sasl2/slapd.conf and then the
authentication succeeded)

Updated version attached.

Regards,

Matthijs Mohlmann

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFevLw2n1ROIkXqbARAuDfAKCoUofnJWgwv2IdQcn/2xmNEEXYdQCeLC3t
U1QpR3nkZINtjCPu+3nY1eo=
=gr/L
-----END PGP SIGNATURE-----
Index: include/ldap_defaults.h
===================================================================
--- include/ldap_defaults.h.orig
+++ include/ldap_defaults.h
@@ -65,4 +65,6 @@
        /* dn of the default "monitor" subentry */
 #define SLAPD_MONITOR_DN               "cn=Monitor"
 
+#define SASL_CONFIGPATH                        LDAP_SYSCONFDIR LDAP_DIRSEP 
"sasl2"
+
 #endif /* _LDAP_CONFIG_H */
Index: servers/slapd/sasl.c
===================================================================
--- servers/slapd/sasl.c.orig
+++ servers/slapd/sasl.c
@@ -951,12 +951,38 @@
 
 #endif /* HAVE_CYRUS_SASL */
 
+static int
+slap_sasl_getconfpath( void * context, char ** path )
+{
+       char * sasl_default_configpath;
+       size_t len;
+
+#if SASL_VERSION_MAJOR >= 2
+       sasl_default_configpath = "/usr/lib/sasl2";
+#else
+       sasl_default_configpath = "/usr/lib/sasl";
+#endif
+
+       len = strlen(SASL_CONFIGPATH) + 1 /* colon */ +
+               strlen(sasl_default_configpath) + 1 /* \0 */;
+       *path = malloc( len );
+       if ( *path == NULL )
+               return SASL_FAIL;
+
+       if (snprintf( *path, len, "%s:%s", SASL_CONFIGPATH,
+                               sasl_default_configpath ) != len-1 )
+               return SASL_FAIL;
+
+       return SASL_OK;
+}
+
 int slap_sasl_init( void )
 {
 #ifdef HAVE_CYRUS_SASL
        int rc;
        static sasl_callback_t server_callbacks[] = {
                { SASL_CB_LOG, &slap_sasl_log, NULL },
+               { SASL_CB_GETCONFPATH, &slap_sasl_getconfpath, NULL },
                { SASL_CB_LIST_END, NULL, NULL }
        };
 

Reply via email to