From 3cb7a09eb0b8c7157c04bc1f44b45acd65248426 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 28 Aug 2002 07:12:22 +0000 Subject: [PATCH] Added check for Cyrus SASL sasl_version() --- configure.in | 6 ++++++ libraries/libldap/cyrus.c | 22 ++++++++++++++++++++++ servers/slapd/sasl.c | 21 +++++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/configure.in b/configure.in index ce15a164b5..47204a9306 100644 --- a/configure.in +++ b/configure.in @@ -2194,6 +2194,12 @@ if test $ol_with_cyrus_sasl != no ; then if test $ol_enable_spasswd != no ; then ol_link_spasswd=yes fi + + ac_save_LIBS="$LIBS" + LIBS="$LIBS $ol_link_sasl" + AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1, + [define if your SASL library has sasl_version()])]) + LIBS="$ac_save_LIBS" fi else diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c index 5310903c0e..db6b80805b 100644 --- a/libraries/libldap/cyrus.c +++ b/libraries/libldap/cyrus.c @@ -56,6 +56,28 @@ int ldap_int_sasl_init( void ) { SASL_CB_LIST_END, NULL, NULL } }; +#ifdef HAVE_SASL_VERSION +#define SASL_BUILD_VERSION ((SASL_VERSION_MAJOR << 24) |\ + (SASL_VERSION_MINOR << 16) | SASL_VERSION_STEP) + + { int rc; + sasl_version( NULL, &rc ); + if ( ((rc >> 16) != ((SASL_VERSION_MAJOR << 8)|SASL_VERSION_MINOR)) || + (rc & 0xffff) < SASL_VERSION_STEP) { + +#ifdef NEW_LOGGING + LDAP_LOG( TRANSPORT, INFO, + "ldap_int_sasl_init: SASL version mismatch, got %x, wanted %x.\n", + rc, SASL_BUILD_VERSION, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "ldap_int_sasl_init: SASL version mismatch, got %x, wanted %x.\n", + rc, SASL_BUILD_VERSION, 0 ); +#endif + return -1; + } + } +#endif if ( sasl_initialized ) { return 0; } diff --git a/servers/slapd/sasl.c b/servers/slapd/sasl.c index 2d9df14d59..b8f1d13f10 100644 --- a/servers/slapd/sasl.c +++ b/servers/slapd/sasl.c @@ -1091,6 +1091,27 @@ int slap_sasl_init( void ) { SASL_CB_LIST_END, NULL, NULL } }; +#ifdef HAVE_SASL_VERSION +#define SASL_BUILD_VERSION ((SASL_VERSION_MAJOR << 24) |\ + (SASL_VERSION_MINOR << 16) | SASL_VERSION_STEP) + + sasl_version( NULL, &rc ); + if ( ((rc >> 16) != ((SASL_VERSION_MAJOR << 8)|SASL_VERSION_MINOR)) || + (rc & 0xffff) < SASL_VERSION_STEP) { + +#ifdef NEW_LOGGING + LDAP_LOG( TRANSPORT, INFO, + "slap_sasl_init: SASL version mismatch, got %x, wanted %x.\n", + rc, SASL_BUILD_VERSION, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "slap_sasl_init: SASL version mismatch, got %x, wanted %x.\n", + rc, SASL_BUILD_VERSION, 0 ); +#endif + return -1; + } +#endif + sasl_set_alloc( ber_memalloc, ber_memcalloc, -- 2.39.5