]> git.sur5r.net Git - openldap/commitdiff
Added check for Cyrus SASL sasl_version()
authorHoward Chu <hyc@openldap.org>
Wed, 28 Aug 2002 07:12:22 +0000 (07:12 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 28 Aug 2002 07:12:22 +0000 (07:12 +0000)
configure.in
libraries/libldap/cyrus.c
servers/slapd/sasl.c

index ce15a164b50630f2f2d7aaaed660d1325d3215e2..47204a93064edb62fa9539036dd4de6a4302739b 100644 (file)
@@ -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
index 5310903c0ea570f59d59c2395ab7139e8bf6399f..db6b80805b0049f583aa09e2ad6f1b2579da619d 100644 (file)
@@ -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;
        }
index 2d9df14d59e59cc27905af9b8bbeeeafc01b1a13..b8f1d13f10be7adac55dee5182d826164a612a6f 100644 (file)
@@ -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,