sasl-default-path
authorDebian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org>
Sat, 24 Sep 2022 19:40:21 +0000 (20:40 +0100)
committerRyan Tandy <ryan@nardis.ca>
Sat, 24 Sep 2022 19:40:21 +0000 (20:40 +0100)
Add /etc/ldap/sasl2 to the SASL configuration search path.

Not submitted upstream.  Somewhat Debian-specific and probably not of
interest upstream.

Gbp-Pq: Name sasl-default-path

include/ldap_defaults.h
servers/slapd/sasl.c

index 3822c5487c9c0c6fe7001fc29d09ea4e10b41b01..51182af4d5662353dedb6716e08248c15b15a43f 100644 (file)
@@ -68,4 +68,6 @@
  */
 #define LLOADD_DEFAULT_CONFIGFILE      LDAP_SYSCONFDIR LDAP_DIRSEP "lloadd.conf"
 
+#define SASL_CONFIGPATH                        LDAP_SYSCONFDIR LDAP_DIRSEP "sasl2"
+
 #endif /* _LDAP_CONFIG_H */
index 1e1730456bd20eed4c313b94b2a7bd4fc671546c..20e2d03e25ddcde8d2b0418efb8fbb3fbd9da783 100644 (file)
@@ -1231,12 +1231,38 @@ static const rewrite_mapper slapd_mapper = {
        slapd_rw_destroy
 };
 
+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_cb_ft)&slap_sasl_log, NULL },
+               { SASL_CB_GETCONFPATH, (slap_sasl_cb_ft)&slap_sasl_getconfpath, NULL },
                { SASL_CB_GETOPT, (slap_sasl_cb_ft)&slap_sasl_getopt, NULL },
                { SASL_CB_LIST_END, NULL, NULL }
        };