From cf76c221a057215723eaed4ea0cd7ca0630a9464 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Mon, 3 Jan 2011 23:10:44 +0000 Subject: [PATCH] ITS#6698 --- CHANGES | 1 + README | 2 +- build/openldap.m4 | 11 +- configure | 385 +++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 393 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index cfe7a80ea6..c8c45100f3 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,7 @@ OpenLDAP 2.4.24 Engineering Fixed liblutil getpass prompts (ITS#6702) Fixed ldapsearch segfault with deref (ITS#6638) Fixed slapd acl parsing overflow (ITS#6611) + Fixed slapd support for BDB 5.0+ (ITS#6698) Fixed slapd config leak with olcDbDirectory (ITS#6634) Fixed slapd to free controls if needed (ITS#6629) Fixed slapd filter leak (ITS#6635) diff --git a/README b/README index 2f8fc2a679..d2f247cee9 100644 --- a/README +++ b/README @@ -20,7 +20,7 @@ REQUIRED SOFTWARE SLAPD: BDB and HDB backends require Oracle Berkeley DB 4.4 - 4.8, - or 5.0 - 5.1. It is highly recommended to apply the + or 5.0 - 5.1. It is highly recommended to apply the patches from Oracle for a given release. CLIENTS/CONTRIB ware: diff --git a/build/openldap.m4 b/build/openldap.m4 index a5df66c8ef..b516c6a4d4 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -357,15 +357,22 @@ dnl Try to locate appropriate library AC_DEFUN([OL_BERKELEY_DB_LINK], [ol_cv_lib_db=no -if test $ol_cv_bdb_major = 4 ; then +if test $ol_cv_bdb_major = 5 ; then + OL_BERKELEY_DB_TRY(ol_cv_db_db_5_dot_m,[-ldb-5.$ol_cv_bdb_minor]) + OL_BERKELEY_DB_TRY(ol_cv_db_db5m,[-ldb5$ol_cv_bdb_minor]) + OL_BERKELEY_DB_TRY(ol_cv_db_db_5m,[-ldb-5$ol_cv_bdb_minor]) + OL_BERKELEY_DB_TRY(ol_cv_db_db_5_m,[-ldb-5-$ol_cv_bdb_minor]) + OL_BERKELEY_DB_TRY(ol_cv_db_db_5,[-ldb-5]) + OL_BERKELEY_DB_TRY(ol_cv_db_db5,[-ldb5]) +elif test $ol_cv_bdb_major = 4 ; then OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_m,[-ldb-4.$ol_cv_bdb_minor]) OL_BERKELEY_DB_TRY(ol_cv_db_db4m,[-ldb4$ol_cv_bdb_minor]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4m,[-ldb-4$ol_cv_bdb_minor]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4_m,[-ldb-4-$ol_cv_bdb_minor]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4]) OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4]) - OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb]) fi +OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb]) OL_BERKELEY_DB_TRY(ol_cv_db_none) ]) dnl diff --git a/configure b/configure index e77d876b58..c4e9f057bf 100755 --- a/configure +++ b/configure @@ -20281,7 +20281,386 @@ $as_echo "$ol_cv_bdb_compat" >&6; } ol_cv_lib_db=no -if test $ol_cv_bdb_major = 4 ; then +if test $ol_cv_bdb_major = 5 ; then + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb-5.$ol_cv_bdb_minor)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb-5.$ol_cv_bdb_minor)... " >&6; } +if test "${ol_cv_db_db_5_dot_m+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb-5.$ol_cv_bdb_minor + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db_5_dot_m=yes +else + ol_cv_db_db_5_dot_m=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db_5_dot_m" >&5 +$as_echo "$ol_cv_db_db_5_dot_m" >&6; } + + if test $ol_cv_db_db_5_dot_m = yes ; then + ol_cv_lib_db=-ldb-5.$ol_cv_bdb_minor + fi +fi + + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb5$ol_cv_bdb_minor)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb5$ol_cv_bdb_minor)... " >&6; } +if test "${ol_cv_db_db5m+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb5$ol_cv_bdb_minor + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db5m=yes +else + ol_cv_db_db5m=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db5m" >&5 +$as_echo "$ol_cv_db_db5m" >&6; } + + if test $ol_cv_db_db5m = yes ; then + ol_cv_lib_db=-ldb5$ol_cv_bdb_minor + fi +fi + + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb-5$ol_cv_bdb_minor)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb-5$ol_cv_bdb_minor)... " >&6; } +if test "${ol_cv_db_db_5m+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb-5$ol_cv_bdb_minor + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db_5m=yes +else + ol_cv_db_db_5m=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db_5m" >&5 +$as_echo "$ol_cv_db_db_5m" >&6; } + + if test $ol_cv_db_db_5m = yes ; then + ol_cv_lib_db=-ldb-5$ol_cv_bdb_minor + fi +fi + + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb-5-$ol_cv_bdb_minor)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb-5-$ol_cv_bdb_minor)... " >&6; } +if test "${ol_cv_db_db_5_m+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb-5-$ol_cv_bdb_minor + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db_5_m=yes +else + ol_cv_db_db_5_m=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db_5_m" >&5 +$as_echo "$ol_cv_db_db_5_m" >&6; } + + if test $ol_cv_db_db_5_m = yes ; then + ol_cv_lib_db=-ldb-5-$ol_cv_bdb_minor + fi +fi + + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb-5)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb-5)... " >&6; } +if test "${ol_cv_db_db_5+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb-5 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db_5=yes +else + ol_cv_db_db_5=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db_5" >&5 +$as_echo "$ol_cv_db_db_5" >&6; } + + if test $ol_cv_db_db_5 = yes ; then + ol_cv_lib_db=-ldb-5 + fi +fi + + if test $ol_cv_lib_db = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb5)" >&5 +$as_echo_n "checking for Berkeley DB link (-ldb5)... " >&6; } +if test "${ol_cv_db_db5+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ol_DB_LIB=-ldb5 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_DB_185_H +# include +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int +main () +{ + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ol_cv_db_db5=yes +else + ol_cv_db_db5=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$ol_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ol_cv_db_db5" >&5 +$as_echo "$ol_cv_db_db5" >&6; } + + if test $ol_cv_db_db5 = yes ; then + ol_cv_lib_db=-ldb5 + fi +fi + +elif test $ol_cv_bdb_major = 4 ; then if test $ol_cv_lib_db = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb-4.$ol_cv_bdb_minor)" >&5 $as_echo_n "checking for Berkeley DB link (-ldb-4.$ol_cv_bdb_minor)... " >&6; } @@ -20660,7 +21039,8 @@ $as_echo "$ol_cv_db_db4" >&6; } fi fi - if test $ol_cv_lib_db = no ; then +fi +if test $ol_cv_lib_db = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (-ldb)" >&5 $as_echo_n "checking for Berkeley DB link (-ldb)... " >&6; } if test "${ol_cv_db_db+set}" = set; then : @@ -20723,7 +21103,6 @@ $as_echo "$ol_cv_db_db" >&6; } fi fi -fi if test $ol_cv_lib_db = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Berkeley DB link (default)" >&5 $as_echo_n "checking for Berkeley DB link (default)... " >&6; } -- 2.39.5