diff options
| author | Nathan Kinder <nkinder@redhat.com> | 2007-06-08 23:19:20 +0000 |
|---|---|---|
| committer | Nathan Kinder <nkinder@redhat.com> | 2007-06-08 23:19:20 +0000 |
| commit | 85eefc580b0dc619292325319a7bb261dd698e15 (patch) | |
| tree | 9cb86c2de3097d356db3b34d2b970c16971d3635 | |
| parent | d9b8787008e72e696b2b92f20e18b4c3f5f0a38c (diff) | |
Resolves: 240583
Summary: Added SASL support to ldclt as well as some thread-safety fixes for ns-slapd when using SASL.
| -rw-r--r-- | Makefile.am | 5 | ||||
| -rw-r--r-- | Makefile.in | 29 | ||||
| -rw-r--r-- | aclocal.m4 | 34 | ||||
| -rwxr-xr-x | configure | 208 | ||||
| -rw-r--r-- | ldap/servers/slapd/saslbind.c | 37 | ||||
| -rwxr-xr-x | ldap/servers/slapd/tools/ldaptool-sasl.c | 371 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldaptool-sasl.h | 45 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldaptool.h | 208 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/ldapfct.c | 73 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/ldclt.c | 195 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/ldclt.h | 8 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/ldclt.use | 5 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/ldcltU.c | 10 | ||||
| -rw-r--r-- | ldap/servers/slapd/tools/ldclt/scalab01.c | 8 | ||||
| -rw-r--r-- | ltmain.sh | 162 |
15 files changed, 1012 insertions, 386 deletions
diff --git a/Makefile.am b/Makefile.am index 8bebecd9..3f0baf49 100644 --- a/Makefile.am +++ b/Makefile.am @@ -867,7 +867,8 @@ ldap_agent_bin_LDADD = $(NETSNMP_LINK) #------------------------ # ldclt #------------------------ -ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldclt/data.c \ +ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldaptool-sasl.c \ + ldap/servers/slapd/tools/ldclt/data.c \ ldap/servers/slapd/tools/ldclt/ldapfct.c \ ldap/servers/slapd/tools/ldclt/ldclt.c \ ldap/servers/slapd/tools/ldclt/ldcltU.c \ @@ -883,7 +884,7 @@ if SOLARIS ldclt_bin_SOURCES += ldap/servers/slapd/tools/ldclt/opCheck.c endif -ldclt_bin_CPPFLAGS = $(AM_CPPFLAGS) @ldapsdk_inc@ @nss_inc@ @nspr_inc@ +ldclt_bin_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/servers/slapd/tools @ldapsdk_inc@ @sasl_inc@ @nss_inc@ @nspr_inc@ ldclt_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBNSL) $(LIBSOCKET) $(LIBDL) #------------------------ diff --git a/Makefile.in b/Makefile.in index 2c0d6280..f1b813e0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -588,7 +588,8 @@ am_ldap_agent_bin_OBJECTS = \ ldap/servers/slapd/ldap_agent_bin-agtmmap.$(OBJEXT) ldap_agent_bin_OBJECTS = $(am_ldap_agent_bin_OBJECTS) ldap_agent_bin_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__ldclt_bin_SOURCES_DIST = ldap/servers/slapd/tools/ldclt/data.c \ +am__ldclt_bin_SOURCES_DIST = ldap/servers/slapd/tools/ldaptool-sasl.c \ + ldap/servers/slapd/tools/ldclt/data.c \ ldap/servers/slapd/tools/ldclt/ldapfct.c \ ldap/servers/slapd/tools/ldclt/ldclt.c \ ldap/servers/slapd/tools/ldclt/ldcltU.c \ @@ -602,6 +603,7 @@ am__ldclt_bin_SOURCES_DIST = ldap/servers/slapd/tools/ldclt/data.c \ ldap/servers/slapd/tools/ldclt/opCheck.c @SOLARIS_TRUE@am__objects_3 = ldap/servers/slapd/tools/ldclt/ldclt_bin-opCheck.$(OBJEXT) am_ldclt_bin_OBJECTS = \ + ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-data.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-ldapfct.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-ldclt.$(OBJEXT) \ @@ -872,7 +874,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SOLARIS_FALSE = @SOLARIS_FALSE@ @@ -1780,7 +1781,8 @@ ldap_agent_bin_LDADD = $(NETSNMP_LINK) #------------------------ # ldclt #------------------------ -ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldclt/data.c \ +ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldaptool-sasl.c \ + ldap/servers/slapd/tools/ldclt/data.c \ ldap/servers/slapd/tools/ldclt/ldapfct.c \ ldap/servers/slapd/tools/ldclt/ldclt.c \ ldap/servers/slapd/tools/ldclt/ldcltU.c \ @@ -1791,7 +1793,7 @@ ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldclt/data.c \ ldap/servers/slapd/tools/ldclt/utils.c \ ldap/servers/slapd/tools/ldclt/version.c \ ldap/servers/slapd/tools/ldclt/workarounds.c $(am__append_1) -ldclt_bin_CPPFLAGS = $(AM_CPPFLAGS) @ldapsdk_inc@ @nss_inc@ @nspr_inc@ +ldclt_bin_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/servers/slapd/tools @ldapsdk_inc@ @sasl_inc@ @nss_inc@ @nspr_inc@ ldclt_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBNSL) $(LIBSOCKET) $(LIBDL) #------------------------ @@ -3553,6 +3555,9 @@ ldap/servers/slapd/ldap_agent_bin-agtmmap.$(OBJEXT): \ ldap-agent-bin$(EXEEXT): $(ldap_agent_bin_OBJECTS) $(ldap_agent_bin_DEPENDENCIES) @rm -f ldap-agent-bin$(EXEEXT) $(LINK) $(ldap_agent_bin_LDFLAGS) $(ldap_agent_bin_OBJECTS) $(ldap_agent_bin_LDADD) $(LIBS) +ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.$(OBJEXT): \ + ldap/servers/slapd/tools/$(am__dirstamp) \ + ldap/servers/slapd/tools/$(DEPDIR)/$(am__dirstamp) ldap/servers/slapd/tools/ldclt/$(am__dirstamp): @$(mkdir_p) ldap/servers/slapd/tools/ldclt @: > ldap/servers/slapd/tools/ldclt/$(am__dirstamp) @@ -4492,6 +4497,7 @@ mostlyclean-compile: -rm -f ldap/servers/slapd/tools/ldclt/ldclt_bin-utils.$(OBJEXT) -rm -f ldap/servers/slapd/tools/ldclt/ldclt_bin-version.$(OBJEXT) -rm -f ldap/servers/slapd/tools/ldclt/ldclt_bin-workarounds.$(OBJEXT) + -rm -f ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.$(OBJEXT) -rm -f ldap/servers/slapd/tools/ldif_bin-ldif.$(OBJEXT) -rm -f ldap/servers/slapd/tools/migratecred_bin-migratecred.$(OBJEXT) -rm -f ldap/servers/slapd/tools/mmldif_bin-mmldif.$(OBJEXT) @@ -4988,6 +4994,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/back-ldbm/$(DEPDIR)/libback_ldbm_la-vlv_key.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/back-ldbm/$(DEPDIR)/libback_ldbm_la-vlv_srch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/tools/$(DEPDIR)/dbscan_bin-dbscan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/tools/$(DEPDIR)/ldif_bin-ldif.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/tools/$(DEPDIR)/migratecred_bin-migratecred.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/tools/$(DEPDIR)/mmldif_bin-mmldif.Po@am__quote@ @@ -7672,6 +7679,20 @@ ldap/servers/slapd/ldap_agent_bin-agtmmap.obj: ldap/servers/slapd/agtmmap.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldap_agent_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/servers/slapd/ldap_agent_bin-agtmmap.obj `if test -f 'ldap/servers/slapd/agtmmap.c'; then $(CYGPATH_W) 'ldap/servers/slapd/agtmmap.c'; else $(CYGPATH_W) '$(srcdir)/ldap/servers/slapd/agtmmap.c'; fi` +ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.o: ldap/servers/slapd/tools/ldaptool-sasl.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldclt_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.o -MD -MP -MF "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo" -c -o ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.o `test -f 'ldap/servers/slapd/tools/ldaptool-sasl.c' || echo '$(srcdir)/'`ldap/servers/slapd/tools/ldaptool-sasl.c; \ +@am__fastdepCC_TRUE@ then mv -f "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo" "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Po"; else rm -f "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/servers/slapd/tools/ldaptool-sasl.c' object='ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldclt_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.o `test -f 'ldap/servers/slapd/tools/ldaptool-sasl.c' || echo '$(srcdir)/'`ldap/servers/slapd/tools/ldaptool-sasl.c + +ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.obj: ldap/servers/slapd/tools/ldaptool-sasl.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldclt_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.obj -MD -MP -MF "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo" -c -o ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.obj `if test -f 'ldap/servers/slapd/tools/ldaptool-sasl.c'; then $(CYGPATH_W) 'ldap/servers/slapd/tools/ldaptool-sasl.c'; else $(CYGPATH_W) '$(srcdir)/ldap/servers/slapd/tools/ldaptool-sasl.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo" "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Po"; else rm -f "ldap/servers/slapd/tools/$(DEPDIR)/ldclt_bin-ldaptool-sasl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/servers/slapd/tools/ldaptool-sasl.c' object='ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldclt_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.obj `if test -f 'ldap/servers/slapd/tools/ldaptool-sasl.c'; then $(CYGPATH_W) 'ldap/servers/slapd/tools/ldaptool-sasl.c'; else $(CYGPATH_W) '$(srcdir)/ldap/servers/slapd/tools/ldaptool-sasl.c'; fi` + ldap/servers/slapd/tools/ldclt/ldclt_bin-data.o: ldap/servers/slapd/tools/ldclt/data.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ldclt_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/servers/slapd/tools/ldclt/ldclt_bin-data.o -MD -MP -MF "ldap/servers/slapd/tools/ldclt/$(DEPDIR)/ldclt_bin-data.Tpo" -c -o ldap/servers/slapd/tools/ldclt/ldclt_bin-data.o `test -f 'ldap/servers/slapd/tools/ldclt/data.c' || echo '$(srcdir)/'`ldap/servers/slapd/tools/ldclt/data.c; \ @am__fastdepCC_TRUE@ then mv -f "ldap/servers/slapd/tools/ldclt/$(DEPDIR)/ldclt_bin-data.Tpo" "ldap/servers/slapd/tools/ldclt/$(DEPDIR)/ldclt_bin-data.Po"; else rm -f "ldap/servers/slapd/tools/ldclt/$(DEPDIR)/ldclt_bin-data.Tpo"; exit 1; fi @@ -1578,27 +1578,10 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -4305,9 +4288,6 @@ CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -4441,11 +4421,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. @@ -4457,7 +4437,7 @@ postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -4537,7 +4517,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -6373,7 +6353,6 @@ do done done done -IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris @@ -6406,7 +6385,6 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do done ]) SED=$lt_cv_path_SED -AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) @@ -465,7 +465,7 @@ ac_includes_default="\ #endif" ac_default_prefix=/opt/$PACKAGE_NAME -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS debug_defs BUNDLE_TRUE BUNDLE_FALSE enable_pam_passthru_TRUE enable_pam_passthru_FALSE enable_dna_TRUE enable_dna_FALSE enable_ldapi_TRUE enable_ldapi_FALSE enable_bitwise_TRUE enable_bitwise_FALSE configdir sampledatadir propertydir schemadir serverdir serverplugindir scripttemplatedir perldir instconfigdir WINNT_TRUE WINNT_FALSE LIBSOCKET LIBNSL LIBDL LIBCSTD LIBCRUN initdir shared_lib_suffix HPUX_TRUE HPUX_FALSE SOLARIS_TRUE SOLARIS_FALSE PKG_CONFIG ICU_CONFIG NETSNMP_CONFIG nspr_inc nspr_lib nspr_libdir nss_inc nss_lib nss_libdir ldapsdk_inc ldapsdk_lib ldapsdk_libdir ldapsdk_bindir db_inc db_incdir db_lib db_libdir db_bindir db_libver sasl_inc sasl_lib sasl_libdir svrcore_inc svrcore_lib icu_lib icu_inc icu_bin netsnmp_inc netsnmp_lib netsnmp_libdir netsnmp_link brand capbrand vendor LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS debug_defs BUNDLE_TRUE BUNDLE_FALSE enable_pam_passthru_TRUE enable_pam_passthru_FALSE enable_dna_TRUE enable_dna_FALSE enable_ldapi_TRUE enable_ldapi_FALSE enable_bitwise_TRUE enable_bitwise_FALSE configdir sampledatadir propertydir schemadir serverdir serverplugindir scripttemplatedir perldir instconfigdir WINNT_TRUE WINNT_FALSE LIBSOCKET LIBNSL LIBDL LIBCSTD LIBCRUN initdir shared_lib_suffix HPUX_TRUE HPUX_FALSE SOLARIS_TRUE SOLARIS_FALSE PKG_CONFIG ICU_CONFIG NETSNMP_CONFIG nspr_inc nspr_lib nspr_libdir nss_inc nss_lib nss_libdir ldapsdk_inc ldapsdk_lib ldapsdk_libdir ldapsdk_bindir db_inc db_incdir db_lib db_libdir db_bindir db_libver sasl_inc sasl_lib sasl_libdir svrcore_inc svrcore_lib icu_lib icu_inc icu_bin netsnmp_inc netsnmp_lib netsnmp_libdir netsnmp_link brand capbrand vendor LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -3835,7 +3835,6 @@ do done done done -IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris @@ -3870,7 +3869,6 @@ done fi SED=$lt_cv_path_SED - echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 @@ -4311,7 +4309,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4314 "configure"' > conftest.$ac_ext + echo '#line 4312 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -5446,7 +5444,7 @@ fi # Provide some information about the compiler. -echo "$as_me:5449:" \ +echo "$as_me:5447:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 @@ -6509,11 +6507,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6512: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6510: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6516: \$? = $ac_status" >&5 + echo "$as_me:6514: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6777,11 +6775,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6780: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6778: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6784: \$? = $ac_status" >&5 + echo "$as_me:6782: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6881,11 +6879,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6884: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6882: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:6888: \$? = $ac_status" >&5 + echo "$as_me:6886: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8346,31 +8344,10 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 8353 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -9247,7 +9224,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9250 "configure" +#line 9227 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9347,7 +9324,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9350 "configure" +#line 9327 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9678,9 +9655,6 @@ CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -9814,11 +9788,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. @@ -9830,7 +9804,7 @@ postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -9910,7 +9884,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -11690,11 +11664,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11693: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11667: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11697: \$? = $ac_status" >&5 + echo "$as_me:11671: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -11794,11 +11768,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11797: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11771: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11801: \$? = $ac_status" >&5 + echo "$as_me:11775: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12326,31 +12300,10 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 12333 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -12734,9 +12687,6 @@ CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -12870,11 +12820,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. @@ -12886,7 +12836,7 @@ postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -12966,7 +12916,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -13388,11 +13338,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13391: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13341: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13395: \$? = $ac_status" >&5 + echo "$as_me:13345: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13492,11 +13442,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13495: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13445: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13499: \$? = $ac_status" >&5 + echo "$as_me:13449: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14937,31 +14887,10 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 14944 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -15345,9 +15274,6 @@ CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -15481,11 +15407,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. @@ -15497,7 +15423,7 @@ postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -15577,7 +15503,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -15719,11 +15645,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15722: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15648: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15726: \$? = $ac_status" >&5 + echo "$as_me:15652: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15987,11 +15913,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15990: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15916: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15994: \$? = $ac_status" >&5 + echo "$as_me:15920: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16091,11 +16017,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16094: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16020: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16098: \$? = $ac_status" >&5 + echo "$as_me:16024: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17556,31 +17482,10 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 17563 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -17964,9 +17869,6 @@ CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -18100,11 +18002,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. @@ -18116,7 +18018,7 @@ postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -18196,7 +18098,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -18448,9 +18350,6 @@ CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC -gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -gcc_ver=\`gcc -dumpversion\` - # An ERE matcher. EGREP=$lt_EGREP @@ -18584,11 +18483,11 @@ striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. -predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. -postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. @@ -18600,7 +18499,7 @@ postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -18680,7 +18579,7 @@ variables_saved_for_relink="$variables_saved_for_relink" link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries -sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec @@ -25959,7 +25858,6 @@ s,@ac_ct_CC@,$ac_ct_CC,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@SED@,$SED,;t t s,@EGREP@,$EGREP,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t diff --git a/ldap/servers/slapd/saslbind.c b/ldap/servers/slapd/saslbind.c index d91cd69b..f7435ce4 100644 --- a/ldap/servers/slapd/saslbind.c +++ b/ldap/servers/slapd/saslbind.c @@ -54,38 +54,33 @@ static char *serverfqdn; /* * utility functions needed by the sasl library */ - -int sasl_os_gethost(char *buf, int len) -{ - int rc; - - rc = gethostname(buf, len); - LDAPDebug(LDAP_DEBUG_TRACE, "sasl_os_gethost %s\n", buf, 0, 0); - return ( rc == 0 ? SASL_OK : SASL_FAIL ); -} - -void *sasl_mutex_alloc(void) +void *nssasl_mutex_alloc(void) { return PR_NewLock(); } -int sasl_mutex_lock(void *mutex) +int nssasl_mutex_lock(void *mutex) { PR_Lock(mutex); return SASL_OK; } -int sasl_mutex_unlock(void *mutex) +int nssasl_mutex_unlock(void *mutex) { if (PR_Unlock(mutex) == PR_SUCCESS) return SASL_OK; return SASL_FAIL; } -void sasl_mutex_free(void *mutex) +void nssasl_mutex_free(void *mutex) { PR_DestroyLock(mutex); } +void nssasl_free(void *ptr) +{ + slapi_ch_free(&ptr); +} + /* * sasl library callbacks */ @@ -603,6 +598,20 @@ int ids_sasl_init(void) LDAPDebug(LDAP_DEBUG_TRACE, "sasl service fqdn is: %s\n", serverfqdn, 0, 0); + /* Set SASL memory allocation callbacks */ + sasl_set_alloc( + (sasl_malloc_t *)slapi_ch_malloc, + (sasl_calloc_t *)slapi_ch_calloc, + (sasl_realloc_t *)slapi_ch_realloc, + (sasl_free_t *)nssasl_free ); + + /* Set SASL mutex callbacks */ + sasl_set_mutex( + (sasl_mutex_alloc_t *)nssasl_mutex_alloc, + (sasl_mutex_lock_t *)nssasl_mutex_lock, + (sasl_mutex_unlock_t *)nssasl_mutex_unlock, + (sasl_mutex_free_t *)nssasl_mutex_free); + result = sasl_server_init(ids_sasl_callbacks, "iDS"); if (result != SASL_OK) { diff --git a/ldap/servers/slapd/tools/ldaptool-sasl.c b/ldap/servers/slapd/tools/ldaptool-sasl.c new file mode 100755 index 00000000..3658bda9 --- /dev/null +++ b/ldap/servers/slapd/tools/ldaptool-sasl.c @@ -0,0 +1,371 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Sun LDAP C SDK. + * + * The Initial Developer of the Original Code is Sun Microsystems, Inc. + * + * Portions created by Sun Microsystems, Inc are Copyright (C) 2005 + * Sun Microsystems, Inc. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * File for ldaptool routines for SASL + */ + +#include <ldap.h> +#include "ldaptool.h" +#include "ldaptool-sasl.h" +#include <sasl.h> +#include <stdio.h> + +#if defined(HPUX) +#include <sys/termios.h> /* for tcgetattr and tcsetattr */ +#endif /* HPUX */ + +#define SASL_PROMPT "Interact" + +typedef struct { + char *mech; + char *authid; + char *username; + char *passwd; + char *realm; +} ldaptoolSASLdefaults; + +static int get_default(ldaptoolSASLdefaults *defaults, sasl_interact_t *interact, unsigned flags); +static int get_new_value(sasl_interact_t *interact, unsigned flags); + +/* WIN32 does not have getlogin() so roll our own */ +#if defined( _WINDOWS ) || defined( _WIN32 ) +#include "LMCons.h" +static char *getlogin() +{ + LPTSTR lpszSystemInfo; /* pointer to system information string */ + DWORD cchBuff = UNLEN; /* size of user name */ + static TCHAR tchBuffer[UNLEN + 1]; /* buffer for expanded string */ + + lpszSystemInfo = tchBuffer; + GetUserName(lpszSystemInfo, &cchBuff); + + return lpszSystemInfo; +} +#endif /* _WINDOWS || _WIN32 */ + +/* + Note that it is important to use "" (the empty string, length 0) as the default + username value for non-interactive cases. This allows the sasl library to find the best + possible default. For example, if using GSSAPI, you want the default value for + the username to be extracted from the Kerberos tgt. The sasl library will do + that for you if you set the default username to "". +*/ +void * +ldaptool_set_sasl_defaults ( LDAP *ld, unsigned flags, char *mech, char *authid, char *username, + char *passwd, char *realm ) +{ + ldaptoolSASLdefaults *defaults; + char *login = NULL; + + if ((defaults = calloc(sizeof(ldaptoolSASLdefaults), 1)) == NULL) { + return NULL; + } + + /* Try to get the login name */ + if ((login = getlogin()) == NULL) { + login = ""; + } + + if (mech) { + defaults->mech = strdup(mech); + } else { + ldap_get_option(ld, LDAP_OPT_X_SASL_MECH, &defaults->mech); + } + + if (authid) { /* use explicit passed in value */ + defaults->authid = strdup(authid); + } else { /* use option value if any */ + ldap_get_option(ld, LDAP_OPT_X_SASL_AUTHCID, &defaults->authid); + if (!defaults->authid) { + /* Default to the login name that is running the command */ + defaults->authid = strdup( login ); + } + } + + if (username) { /* use explicit passed in value */ + defaults->username = strdup(username); + } else { /* use option value if any */ + ldap_get_option(ld, LDAP_OPT_X_SASL_AUTHZID, &defaults->username); + if (!defaults->username && (flags == LDAP_SASL_INTERACTIVE)) { + /* Default to the login name that is running the command */ + defaults->username = strdup( login ); + } else if (!defaults->username) { /* not interactive - use default sasl value */ + defaults->username = strdup( "" ); + } + } + + if (passwd) + defaults->passwd = strdup (passwd); + else + defaults->passwd = strdup (""); + + if (realm) { + defaults->realm = realm; + } else { + ldap_get_option(ld, LDAP_OPT_X_SASL_REALM, &defaults->realm); + } + + return defaults; +} + +void +ldaptool_free_defaults( void *defaults ) { + ldaptoolSASLdefaults *sasl_defaults = defaults; + + if (sasl_defaults) { + if (sasl_defaults->mech) + free (sasl_defaults->mech); + + if (sasl_defaults->authid) + free (sasl_defaults->authid); + + if (sasl_defaults->username) + free (sasl_defaults->username); + + if (sasl_defaults->passwd) + free (sasl_defaults->passwd); + + free (sasl_defaults); + sasl_defaults = NULL; + } +} + +int +ldaptool_sasl_interact( LDAP *ld, unsigned flags, void *defaults, void *prompts ) { + sasl_interact_t *interact = NULL; + ldaptoolSASLdefaults *sasldefaults = defaults; + int rc; + + if (prompts == NULL) { + return (LDAP_PARAM_ERROR); + } + + for (interact = prompts; interact->id != SASL_CB_LIST_END; interact++) { + /* Obtain the default value */ + if ((rc = get_default(sasldefaults, interact, flags)) != LDAP_SUCCESS) { + return (rc); + } + /* always prompt in interactive mode - only prompt in automatic mode + if there is no default - never prompt in quiet mode */ + if ( (flags == LDAP_SASL_INTERACTIVE) || + ((interact->result == NULL) && (flags == LDAP_SASL_AUTOMATIC)) ) { + if ((rc = get_new_value(interact, flags)) != LDAP_SUCCESS) + return (rc); + } + + } + return (LDAP_SUCCESS); +} + +static int +get_default(ldaptoolSASLdefaults *defaults, sasl_interact_t *interact, unsigned flags) { + const char *defvalue = interact->defresult; + + if (defaults != NULL) { + switch( interact->id ) { + case SASL_CB_AUTHNAME: + defvalue = defaults->authid; + break; + case SASL_CB_USER: + defvalue = defaults->username; + break; + case SASL_CB_PASS: + defvalue = defaults->passwd; + break; + case SASL_CB_GETREALM: + defvalue = defaults->realm; + break; + } + } + + if (defvalue != NULL) { + interact->result = defvalue; + if ((char *)interact->result == NULL) + return (LDAP_NO_MEMORY); + interact->len = strlen((char *)(interact->result)); + } + return (LDAP_SUCCESS); +} + +/* + * This function should always be called in LDAP_SASL_INTERACTIVE mode, or + * in LDAP_SASL_AUTOMATIC mode when there is no default value. This function + * will print out the challenge, default value, and prompt to get the value. + * If there is a default value, the user can just press Return/Enter at the + * prompt to use the default value. If there is no default, and the user + * didn't enter anything, this will return "" (the empty string) as the + * value. + */ +static int +get_new_value(sasl_interact_t *interact, unsigned flags) { + char *newvalue = NULL, str[1024]; + int len = 0; + + if ((interact->id == SASL_CB_ECHOPROMPT) || (interact->id == SASL_CB_NOECHOPROMPT)) { + if (interact->challenge) { + fprintf(stderr, "Challenge: %s\n", interact->challenge); + } + } + + if (interact->result) { + fprintf(stderr, "Default: %s\n", (char *)interact->result); + } + + snprintf(str, sizeof(str), "%s:", interact->prompt?interact->prompt:SASL_PROMPT); + str[sizeof(str)-1] = '\0'; + + /* Get the new value */ + if ((interact->id == SASL_CB_PASS) || (interact->id == SASL_CB_NOECHOPROMPT)) { + if ((newvalue = ldaptool_getpass( str )) == NULL) { + return (LDAP_UNAVAILABLE); + } + len = strlen(newvalue); + } else { + fputs(str, stderr); + if ((newvalue = fgets(str, sizeof(str), stdin)) == NULL) { + return (LDAP_UNAVAILABLE); + } + len = strlen(str); + if ((len > 0) && (str[len - 1] == '\n')) { + str[len - 1] = '\0'; + len--; + } + } + + if (len > 0) { /* user typed in something - use it */ + if (interact->result) { + free((void *)interact->result); + } + interact->result = strdup(newvalue); + memset(newvalue, '\0', len); + + if (interact->result == NULL) { + return (LDAP_NO_MEMORY); + } + interact->len = len; + } else { /* use default or "" */ + if (!interact->result) { + interact->result = ""; + } + interact->len = strlen(interact->result); + } + return (LDAP_SUCCESS); +} + +/* + * Implements getpass like functionality for supported platforms. + * + * It is the callers responsibility to zero out the memory used + * to store the password and to free it when it's finished with + * it. + */ +char * +ldaptool_getpass ( const char *prompt ) +{ + char *pass; + +#if defined(_WIN32) + char pbuf[257]; + fputs(prompt,stdout); + fflush(stdout); + if (fgets(pbuf,256,stdin) == NULL) { + pass = NULL; + } else { + char *tmp; + + tmp = strchr(pbuf,'\n'); + if (tmp) *tmp = '\0'; + tmp = strchr(pbuf,'\r'); + if (tmp) *tmp = '\0'; + pass = strdup(pbuf); + } +#else +#if defined(SOLARIS) + /* 256 characters on Solaris */ + pass = (char *)getpassphrase(prompt); +#else +#if defined(HPUX) + /* HP-UX has deprecated their password asking function, so we have + * to resort to doing it the hard way . . . */ + char pbuf[257]; + struct termios termstat; + tcflag_t savestat; + /* Only perform terminal manipulation if stdin is a terminal */ + int havetty = isatty(fileno(stdin)); + + fputs(prompt, stdout); + fflush(stdout); + + if(havetty) { + if(tcgetattr(fileno(stdin), &termstat) < 0) { + perror( "tcgetattr" ); + exit( LDAP_LOCAL_ERROR ); + } + savestat = termstat.c_lflag; + termstat.c_lflag &= ~(ECHO | ECHOE | ECHOK); + termstat.c_lflag |= (ICANON | ECHONL); + if(tcsetattr(fileno(stdin), TCSANOW, &termstat) < 0) { + perror( "tcsetattr" ); + exit( LDAP_LOCAL_ERROR ); + } + } + if (fgets(pbuf,256,stdin) == NULL) { + pass = NULL; + } else { + char *tmp; + pass = NULL; + tmp = strchr(pbuf,'\n'); + if (tmp) + *tmp = '\0'; + pass = strdup(pbuf); + } + if(havetty) { + termstat.c_lflag = savestat; + if(tcsetattr(fileno(stdin), TCSANOW, &termstat) < 0) { + perror( "tcgetattr" ); + exit( LDAP_LOCAL_ERROR ); + } + } +#else + /* limited to 16 chars on Tru64, 32 on AIX */ + pass = (char *)getpass(prompt); +#endif +#endif +#endif + + return pass; +} diff --git a/ldap/servers/slapd/tools/ldaptool-sasl.h b/ldap/servers/slapd/tools/ldaptool-sasl.h new file mode 100644 index 00000000..03556152 --- /dev/null +++ b/ldap/servers/slapd/tools/ldaptool-sasl.h @@ -0,0 +1,45 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Sun LDAP C SDK. + * + * The Initial Developer of the Original Code is Sun Microsystems, Inc. + * + * Portions created by Sun Microsystems, Inc are Copyright (C) 2005 + * Sun Microsystems, Inc. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Include file for ldaptool routines for SASL + */ + +void *ldaptool_set_sasl_defaults ( LDAP *ld, unsigned flags, char *mech, char *authid, char *username, char *passwd, char *realm ); +void ldaptool_free_defaults( void *defaults ); +int ldaptool_sasl_interact ( LDAP *ld, unsigned flags, void *defaults, void *p ); +char * +ldaptool_getpass ( const char *prompt ); diff --git a/ldap/servers/slapd/tools/ldaptool.h b/ldap/servers/slapd/tools/ldaptool.h new file mode 100644 index 00000000..e85c4d0f --- /dev/null +++ b/ldap/servers/slapd/tools/ldaptool.h @@ -0,0 +1,208 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _LDAPTOOL_H +#define _LDAPTOOL_H + +/* XXX:mhein The following is a workaround for the redefinition of */ +/* const problem on OSF. Fix to be provided by NSS */ +/* This is a pretty benign workaround for us which */ +/* should not cause problems in the future even if */ +/* we forget to take it out :-) */ + +#ifdef OSF1V4D +#ifndef __STDC__ +# define __STDC__ +#endif /* __STDC__ */ +#endif /* OSF1V4D */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#ifdef AIX +#include <strings.h> +#endif + + +#ifdef SCOOS +#include <sys/types.h> +#endif + +#ifdef _WINDOWS +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +extern int getopt (int argc, char *const *argv, const char *optstring); +#include <io.h> /* for _mktemp() */ +#define LDAPTOOL_MKTEMP( p ) _mktemp( p ) +#else +#include <sys/file.h> +#include <sys/stat.h> +#include <unistd.h> + +#define LDAPTOOL_MKTEMP( p ) mktemp( p ) +#endif + +#ifdef LINUX +#include <getopt.h> /* not always included from unistd.h */ +#endif + +#include <ctype.h> + +#ifndef SCOOS +#include <sys/types.h> +#endif + +#include <sys/stat.h> +#include <fcntl.h> + +#if defined(NET_SSL) +#include <ssl.h> +#endif + +#include <portable.h> +#include <ldap.h> +#include <ldaplog.h> +#include <ldif.h> + +#if defined(NET_SSL) +#include <ldap_ssl.h> +#endif + +#include <ldappr.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * shared macros, structures, etc. + */ +#define LDAPTOOL_RESULT_IS_AN_ERROR( rc ) \ + ( (rc) != LDAP_SUCCESS && (rc) != LDAP_COMPARE_TRUE \ + && (rc) != LDAP_COMPARE_FALSE ) + +#define LDAPTOOL_DEFSEP "=" /* used by ldapcmp and ldapsearch */ +#define LDAPTOOL_DEFHOST "localhost" +#define LDAPTOOL_DEFSSLSTRENGTH LDAPSSL_AUTH_CERT +#define LDAPTOOL_DEFCERTDBPATH "." +#define LDAPTOOL_DEFKEYDBPATH "." +#define LDAPTOOL_DEFREFHOPLIMIT 5 + +#define LDAPTOOL_SAFEREALLOC( ptr, size ) ( ptr == NULL ? malloc( size ) : \ + realloc( ptr, size )) +/* this defines the max number of control requests for the tools */ +#define CONTROL_REQUESTS 50 + +/* + * globals (defined in common.c) + */ +extern char *ldaptool_host; +extern char *ldaptool_host2; +extern int ldaptool_port; +extern int ldaptool_port2; +extern int ldaptool_verbose; +extern int ldaptool_not; +extern int ldaptool_nobind; +extern int ldaptool_noconv_passwd; +extern char *ldaptool_progname; +extern FILE *ldaptool_fp; +extern char *ldaptool_charset; +extern LDAPControl *ldaptool_request_ctrls[]; +#ifdef LDAP_DEBUG +extern int ldaptool_dbg_lvl; +#define LDAPToolDebug(lvl,fmt,arg1,arg2,arg3) if (lvl & ldaptool_dbg_lvl) { fprintf(stderr,fmt,arg1,arg2,arg3); } +#else +#define LDAPToolDebug(lvl,fmt,arg1,arg2,arg3) +#endif /* LDAP_DEBUG */ + + +/* + * function prototypes + */ +void ldaptool_common_usage( int two_hosts ); +int ldaptool_process_args( int argc, char **argv, char *extra_opts, + int two_hosts, void (*extra_opt_callback)( int option, char *optarg )); +LDAP *ldaptool_ldap_init( int second_host ); +void ldaptool_bind( LDAP *ld ); +void ldaptool_cleanup( LDAP *ld ); +int ldaptool_print_lderror( LDAP *ld, char *msg, int check4ssl ); +#define LDAPTOOL_CHECK4SSL_NEVER 0 +#define LDAPTOOL_CHECK4SSL_ALWAYS 1 +#define LDAPTOOL_CHECK4SSL_IF_APPROP 2 /* if appropriate */ +LDAPControl *ldaptool_create_manage_dsait_control( void ); +void ldaptool_print_referrals( char **refs ); +int ldaptool_print_extended_response( LDAP *ld, LDAPMessage *res, char *msg ); +LDAPControl *ldaptool_create_proxyauth_control( LDAP *ld ); +LDAPControl *ldaptool_create_geteffectiveRights_control ( LDAP *ld, + const char *authzid, const char **attrlist ); +void ldaptool_add_control_to_array( LDAPControl *ctrl, LDAPControl **array); +void ldaptool_reset_control_array( LDAPControl **array ); +char *ldaptool_get_tmp_dir( void ); +char *ldaptool_local2UTF8( const char *s, const char *desc ); +char *ldaptool_getpass( const char *prompt ); +char *ldaptool_read_password( FILE *mod_password_fp ); +int ldaptool_berval_is_ascii( const struct berval *bvp ); +int ldaptool_sasl_bind_s( LDAP *ld, const char *dn, const char *mechanism, + const struct berval *cred, LDAPControl **serverctrls, + LDAPControl **clientctrls, struct berval **servercredp, char *msg ); +int ldaptool_simple_bind_s( LDAP *ld, const char *dn, const char *passwd, + LDAPControl **serverctrls, LDAPControl **clientctrls, char *msg ); +int ldaptool_add_ext_s( LDAP *ld, const char *dn, LDAPMod **attrs, + LDAPControl **serverctrls, LDAPControl **clientctrls, char *msg ); +int ldaptool_modify_ext_s( LDAP *ld, const char *dn, LDAPMod **mods, + LDAPControl **serverctrls, LDAPControl **clientctrls, char *msg ); +int ldaptool_delete_ext_s( LDAP *ld, const char *dn, LDAPControl **serverctrls, + LDAPControl **clientctrls, char *msg ); +int ldaptool_rename_s( LDAP *ld, const char *dn, const char *newrdn, + const char *newparent, int deleteoldrdn, LDAPControl **serverctrls, + LDAPControl **clientctrls, char *msg ); +int ldaptool_compare_ext_s( LDAP *ld, const char *dn, const char *attrtype, + const struct berval *bvalue, LDAPControl **serverctrls, + LDAPControl **clientctrls, char *msg ); +int ldaptool_boolean_str2value ( const char *s, int strict ); +int ldaptool_parse_ctrl_arg ( char *ctrl_arg, char sep, char **ctrl_oid, + int *ctrl_criticality, char **ctrl_value, int *vlen); +FILE *ldaptool_open_file ( const char *filename, const char * mode); + + +#ifdef __cplusplus +} +#endif + +#endif /* LDAPTOOL_H */ diff --git a/ldap/servers/slapd/tools/ldclt/ldapfct.c b/ldap/servers/slapd/tools/ldclt/ldapfct.c index c9078e66..4ba5965d 100644 --- a/ldap/servers/slapd/tools/ldclt/ldapfct.c +++ b/ldap/servers/slapd/tools/ldclt/ldapfct.c @@ -254,6 +254,9 @@ dd/mm/yy | Author | Comments #include "ldclt.h" /* This tool's include file */ #include "utils.h" /* Utilities functions */ /*JLS 14-11-00*/ +#include <sasl.h> +#include "ldaptool-sasl.h" + @@ -656,7 +659,6 @@ connectToServer ( */ if (tttctx->ldapCtx == NULL) { -#ifdef LDCLTSSL /* * SSL is enabled ? */ @@ -703,7 +705,6 @@ connectToServer ( } } } else { -#endif /* * connection initialization in normal, unencrypted mode */ @@ -719,9 +720,7 @@ connectToServer ( fflush (stdout); return (-1); } -#ifdef LDCLTSSL } -#endif if (mctx.mode & LDAP_V2) v2v3 = LDAP_VERSION2; @@ -752,7 +751,8 @@ connectToServer ( * below in this function ? * 03-05-01 : no cleanup I think, cf M2_RNDBINDFILE */ - if ((mctx.bindDN == NULL) && (!(mctx.mod2 & M2_RNDBINDFILE))) /*JLS 03-05-01*/ + if ((mctx.bindDN == NULL) && ((!(mctx.mod2 & M2_RNDBINDFILE)) + && (!(mctx.mod2 & M2_SASLAUTH)))) { /*JLS 05-03-01*/ tttctx->binded = 1; /*JLS 05-03-01*/ return (0); /*JLS 05-03-01*/ @@ -761,7 +761,6 @@ connectToServer ( /* * Maybe we should bind ? */ -#ifdef LDCLTSSL /* * for SSL client authentication, SASL BIND is used */ @@ -804,10 +803,50 @@ connectToServer ( return (-1); /*JLS 18-12-00*/ } /*JLS 18-12-00*/ } - } - else - { -#endif /* LDCLTSSL */ + } else if ((mctx.mod2 & M2_SASLAUTH) && ((!(tttctx->binded)) || + (mctx.mode & BIND_EACH_OPER))) { + void *defaults; + LDAPControl **rctrls = NULL; + + if ( mctx.sasl_mech == NULL) { + fprintf( stderr, "Please specify the SASL mechanism name when " + "using SASL options\n"); + return (-1); + } + + if ( mctx.sasl_secprops != NULL) { + ret = ldap_set_option( tttctx->ldapCtx, LDAP_OPT_X_SASL_SECPROPS, + (void *) mctx.sasl_secprops ); + + if ( ret != LDAP_SUCCESS ) { + fprintf( stderr, "Unable to set LDAP_OPT_X_SASL_SECPROPS: %s\n", + mctx.sasl_secprops ); + return (-1); + } + } + + defaults = ldaptool_set_sasl_defaults( tttctx->ldapCtx, mctx.sasl_flags, mctx.sasl_mech, + mctx.sasl_authid, mctx.sasl_username, mctx.passwd, mctx.sasl_realm ); + if (defaults == NULL) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + + ret = ldap_sasl_interactive_bind_ext_s( tttctx->ldapCtx, mctx.bindDN, mctx.sasl_mech, + NULL, NULL, mctx.sasl_flags, + ldaptool_sasl_interact, defaults, NULL ); + if (ret != LDAP_SUCCESS ) { + tttctx->binded = 0; + if (!(mctx.mode & QUIET)) + ldap_perror( tttctx->ldapCtx, "Bind Error" ); + if (addErrorStat (ret) < 0) + return (-1); + } else { + tttctx->binded = 1; + } + + ldaptool_free_defaults( defaults ); + } else { if (((mctx.bindDN != NULL) || (mctx.mod2 & M2_RNDBINDFILE)) && /*03-05-01*/ ((!(tttctx->binded)) || (mctx.mode & BIND_EACH_OPER))) { @@ -857,9 +896,7 @@ connectToServer ( } /*JLS 18-12-00*/ } } -#ifdef LDCLTSSL } -#endif /* * Normal end @@ -1769,7 +1806,6 @@ createMissingNodes ( if (mctx.mode & VERY_VERBOSE) /*JLS 14-12-00*/ printf ("ldclt[%d]: T%03d: must connect to the server.\n", mctx.pid, tttctx->thrdNum); -#ifdef LDCLTSSL /* * SSL is enabled ? */ @@ -1815,7 +1851,6 @@ createMissingNodes ( } } } else { -#endif /* * connection initialization in normal, unencrypted mode */ @@ -1827,9 +1862,7 @@ createMissingNodes ( fflush (stdout); return (-1); } -#ifdef LDCLTSSL } -#endif if (mctx.mode & LDAP_V2) v2v3 = LDAP_VERSION2; @@ -1848,7 +1881,6 @@ createMissingNodes ( /* * Bind to the server */ -#ifdef LDCLTSSL /* * for SSL client authentication, SASL BIND is used */ @@ -1867,7 +1899,6 @@ createMissingNodes ( return (-1); } } else { -#endif ret = ldap_simple_bind_s (cnx, tttctx->bufBindDN, tttctx->bufPasswd); if (ret != LDAP_SUCCESS) { @@ -1882,9 +1913,7 @@ createMissingNodes ( return (-1); } } -#ifdef LDCLTSSL } -#endif /* * Create the entry @@ -3276,7 +3305,9 @@ doBindOnly ( */ if (connectToServer (tttctx) < 0) return (-1); - if (!(tttctx->binded)) + + /* don't count failed binds unless counteach option is used */ + if (!(tttctx->binded) && !(mctx.mode & COUNT_EACH)) return (0); if (incrementNbOpers (tttctx) < 0) diff --git a/ldap/servers/slapd/tools/ldclt/ldclt.c b/ldap/servers/slapd/tools/ldclt/ldclt.c index 2c7048a0..c4292467 100644 --- a/ldap/servers/slapd/tools/ldclt/ldclt.c +++ b/ldap/servers/slapd/tools/ldclt/ldclt.c @@ -1644,7 +1644,6 @@ basicInit (void) } } -#ifdef LDCLTSSL /* * SSL is enabled ? */ @@ -1677,7 +1676,6 @@ basicInit (void) } } } -#endif /* LDCLTSSL */ /* * Specific scenarios initialization... @@ -1753,6 +1751,8 @@ dumpModeValues (void) printf (" ssl"); if (mctx.mode & CLTAUTH) printf (" ssl_with_client_authentication"); /* BK 23-11-00*/ + if (mctx.mod2 & M2_SASLAUTH) + printf (" saslauth"); if (mctx.mode & SMOOTHSHUTDOWN) /*JLS 17-11-00*/ printf (" smoothshutdown"); /*JLS 17-11-00*/ if (mctx.mode & DONT_SLEEP_DOWN) /*JLS 14-03-01*/ @@ -1857,6 +1857,104 @@ decodeScopeParams ( +/* **************************************************************************** + FUNCTION : saslSetParam + PURPOSE : Sets SASL parameters + INPUT : saslarg = value to decode + OUTPUT : None. + RETURN : -1 if error, 0 otherwise. + DESCRIPTION : Copied from Mozilla LDAP C SDK (common.c) + *****************************************************************************/ +int +saslSetParam ( + char *saslarg) +{ + char *attr = NULL; + int argnamelen; + + if (saslarg == NULL) { + fprintf (stderr, "Error: missing SASL argument\n"); + return (-1); + } + + attr = strchr(saslarg, '='); + if (attr == NULL) { + fprintf( stderr, "Didn't find \"=\" character in %s\n", saslarg); + return (-1); + } + + argnamelen = attr - saslarg; + attr++; + + if (!strncasecmp(saslarg, "secProp", argnamelen)) { + if ( mctx.sasl_secprops != NULL ) { + fprintf( stderr, "secProp previously specified\n"); + return (-1); + } + if (( mctx.sasl_secprops = strdup(attr)) == NULL ) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + } else if (!strncasecmp(saslarg, "realm", argnamelen)) { + if ( mctx.sasl_realm != NULL ) { + fprintf( stderr, "Realm previously specified\n"); + return (-1); + } + if (( mctx.sasl_realm = strdup(attr)) == NULL ) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + } else if (!strncasecmp(saslarg, "authzid", argnamelen)) { + if (mctx.sasl_username != NULL) { + fprintf( stderr, "Authorization name previously specified\n"); + return (-1); + } + if (( mctx.sasl_username = strdup(attr)) == NULL ) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + } else if (!strncasecmp(saslarg, "authid", argnamelen)) { + if ( mctx.sasl_authid != NULL ) { + fprintf( stderr, "Authentication name previously specified\n"); + return (-1); + } + if (( mctx.sasl_authid = strdup(attr)) == NULL) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + } else if (!strncasecmp(saslarg, "mech", argnamelen)) { + if ( mctx.sasl_mech != NULL ) { + fprintf( stderr, "Mech previously specified\n"); + return (-1); + } + if (( mctx.sasl_mech = strdup(attr)) == NULL) { + perror ("malloc"); + exit (LDAP_NO_MEMORY); + } + } else if (!strncasecmp(saslarg, "flags", argnamelen)) { + int len = strlen(attr); + if (len && !strncasecmp(attr, "automatic", len)) { + mctx.sasl_flags = LDAP_SASL_AUTOMATIC; + } else if (len && !strncasecmp(attr, "interactive", len)) { + mctx.sasl_flags = LDAP_SASL_INTERACTIVE; + } else if (len && !strncasecmp(attr, "quiet", len)) { + mctx.sasl_flags = LDAP_SASL_QUIET; + } else { + fprintf(stderr, "Invalid SASL flags value [%s]: must be one of " + "automatic, interactive, or quiet\n", attr); + return (-1); + } + } else { + fprintf (stderr, "Invalid SASL attribute name %s\n", saslarg); + return (-1); + } + return 0; +} + + + + + /* New function */ /*JLS 08-03-01*/ /* **************************************************************************** FUNCTION : decodeReferralParams @@ -2480,46 +2578,52 @@ main ( /* * Initialization */ - mctx.attrlistNb = 0; /*JLS 15-03-01*/ - mctx.attrsonly = DEF_ATTRSONLY; /*JLS 03-01-01*/ - mctx.baseDN = "o=sun,c=us"; - mctx.baseDNLow = -1; /*JLS 13-11-00*/ - mctx.baseDNHigh = -1; /*JLS 13-11-00*/ - mctx.bindDN = NULL; - mctx.bindDNLow = -1; /*JLS 05-01-01*/ - mctx.bindDNHigh = -1; /*JLS 05-01-01*/ - mctx.dlf = NULL; /*JLS 23-03-01*/ - mctx.exitStatus = EXIT_OK; /*JLS 25-08-00*/ - mctx.filter = NULL; - mctx.globStatsCnt = DEF_GLOBAL_NB; /*JLS 08-08-00*/ - mctx.hostname = "localhost"; - mctx.ignErrNb = 0; - mctx.images = NULL; /*JLS 17-11-00*/ - mctx.imagesDir = DEF_IMAGES_PATH; /*JLS 16-11-00*/ - mctx.inactivMax = DEF_INACTIV_MAX; - mctx.maxErrors = DEF_MAX_ERRORS; - mctx.mode = NOTHING; - mctx.mod2 = NOTHING; - mctx.nbNoActivity = 0; - mctx.nbSamples = -1; - mctx.nbThreads = DEF_NB_THREADS; - mctx.opListTail = NULL; - mctx.passwd = NULL; - mctx.pid = getpid(); - mctx.port = DEF_PORT; - mctx.randomLow = -1; - mctx.randomHigh = -1; - mctx.referral = DEF_REFERRAL; /*JLS 08-03-01*/ - mctx.sampling = DEF_SAMPLING; - mctx.scope = DEF_SCOPE; - mctx.slaveConn = 0; - mctx.slavesNb = 0; - mctx.timeout = DEF_TIMEOUT; - mctx.totalReq = -1; - mctx.waitSec = 0; - s1ctx.cnxduration = SCALAB01_DEF_CNX_DURATION; /*JLS 12-01-01*/ - s1ctx.maxcnxnb = SCALAB01_DEF_MAX_CNX; /*JLS 12-01-01*/ - s1ctx.wait = SCALAB01_DEF_WAIT_TIME; /*JLS 12-01-01*/ + mctx.attrlistNb = 0; /*JLS 15-03-01*/ + mctx.attrsonly = DEF_ATTRSONLY; /*JLS 03-01-01*/ + mctx.baseDN = "dc=example,dc=com"; + mctx.baseDNLow = -1; /*JLS 13-11-00*/ + mctx.baseDNHigh = -1; /*JLS 13-11-00*/ + mctx.bindDN = NULL; + mctx.bindDNLow = -1; /*JLS 05-01-01*/ + mctx.bindDNHigh = -1; /*JLS 05-01-01*/ + mctx.dlf = NULL; /*JLS 23-03-01*/ + mctx.exitStatus = EXIT_OK; /*JLS 25-08-00*/ + mctx.filter = NULL; + mctx.globStatsCnt = DEF_GLOBAL_NB; /*JLS 08-08-00*/ + mctx.hostname = "localhost"; + mctx.ignErrNb = 0; + mctx.images = NULL; /*JLS 17-11-00*/ + mctx.imagesDir = DEF_IMAGES_PATH; /*JLS 16-11-00*/ + mctx.inactivMax = DEF_INACTIV_MAX; + mctx.maxErrors = DEF_MAX_ERRORS; + mctx.mode = NOTHING; + mctx.mod2 = NOTHING; + mctx.nbNoActivity = 0; + mctx.nbSamples = -1; + mctx.nbThreads = DEF_NB_THREADS; + mctx.opListTail = NULL; + mctx.passwd = NULL; + mctx.pid = getpid(); + mctx.port = DEF_PORT; + mctx.randomLow = -1; + mctx.randomHigh = -1; + mctx.referral = DEF_REFERRAL; /*JLS 08-03-01*/ + mctx.sampling = DEF_SAMPLING; + mctx.sasl_authid = NULL; + mctx.sasl_flags = LDAP_SASL_QUIET; + mctx.sasl_mech = NULL; + mctx.sasl_realm = NULL; + mctx.sasl_secprops = NULL; + mctx.sasl_username = NULL; + mctx.scope = DEF_SCOPE; + mctx.slaveConn = 0; + mctx.slavesNb = 0; + mctx.timeout = DEF_TIMEOUT; + mctx.totalReq = -1; + mctx.waitSec = 0; + s1ctx.cnxduration = SCALAB01_DEF_CNX_DURATION; /*JLS 12-01-01*/ + s1ctx.maxcnxnb = SCALAB01_DEF_MAX_CNX; /*JLS 12-01-01*/ + s1ctx.wait = SCALAB01_DEF_WAIT_TIME; /*JLS 12-01-01*/ /* * Initiates the object *NOW* @@ -2534,7 +2638,7 @@ main ( * Get options */ while ((opt_ret = getopt (argc, argv, - "a:b:D:e:E:f:h:i:I:n:N:p:qQr:R:s:S:t:T:vVw:W:Z:H")) != EOF) + "a:b:D:e:E:f:h:i:I:n:N:o:p:qQr:R:s:S:t:T:vVw:W:Z:H")) != EOF) switch (opt_ret) { case 'a': @@ -2584,6 +2688,11 @@ main ( case 'N': mctx.nbSamples = atoi (optarg); break; + case 'o': + if (saslSetParam (optarg) < 0) + ldcltExit (EXIT_PARAMS); + mctx.mod2 |= M2_SASLAUTH; + break; case 'p': mctx.port = atoi (optarg); break; diff --git a/ldap/servers/slapd/tools/ldclt/ldclt.h b/ldap/servers/slapd/tools/ldclt/ldclt.h index 6413b39d..3b7a05cb 100644 --- a/ldap/servers/slapd/tools/ldclt/ldclt.h +++ b/ldap/servers/slapd/tools/ldclt/ldclt.h @@ -282,6 +282,7 @@ dd/mm/yy | Author | Comments #define M2_APPEND 0x00000008 /* -e append */ /*JLS 05-04-01*/ #define M2_RNDBINDFILE 0x00000010 /* -e randombinddnfromfile *//*JLS 03-05-01*/ #define M2_BINDONLY 0x00000020 /* -e bindonly */ /*JLS 04-05-01*/ +#define M2_SASLAUTH 0x00000040 /* -o : SASL authentication */ /* * Combinatory defines @@ -536,6 +537,7 @@ typedef struct main_context { char *keydbpin; /* key DB password */ /* BK 23-11-00*/ int lastVal; /* To build filters */ /*JLS 14-03-01*/ ldclt_mutex_t lastVal_mutex; /* Protect lastVal */ /*JLS 14-03-01*/ + int ldapauth; /* Used to indicate auth type */ int maxErrors; /* Max allowed errors */ unsigned int mode; /* Running mode */ unsigned int mod2; /* Running mode - 2 */ /*JLS 19-03-01*/ @@ -560,6 +562,12 @@ typedef struct main_context { char *rndBindFname; /* Rnd bind file name *//*JLS 03-05-01*/ int referral; /* Referral followed */ /*JLS 08-03-01*/ int sampling; /* Sampling frequency */ + char *sasl_authid; + unsigned sasl_flags; + char *sasl_mech; + char *sasl_realm; + char *sasl_secprops; + char *sasl_username; int scope; /* Searches scope */ int slaveConn; /* Slave has connected */ char *slaves[MAX_SLAVES]; /* Slaves list */ diff --git a/ldap/servers/slapd/tools/ldclt/ldclt.use b/ldap/servers/slapd/tools/ldclt/ldclt.use index 37ebe05e..4f388e64 100644 --- a/ldap/servers/slapd/tools/ldclt/ldclt.use +++ b/ldap/servers/slapd/tools/ldclt/ldclt.use @@ -1,6 +1,6 @@ usage: ldclt [-qQvV] [-E <max errors>] [-b <base DN>] [-h <host>] [-p <port>] [-t <timeout>] - [-D <bind DN>] [-w <passwd>] + [-D <bind DN>] [-w <passwd>] [-o <SASL options>] [-e <execParams>] [-a <max pending>] [-n <nb threads>] [-i <nb times>] [-N <nb samples>] [-I <err number>] [-T <total>] @@ -14,7 +14,7 @@ usage: ldclt [-qQvV] [-E <max errors>] The valid options are: -a Asynchronous mode, with max pending operations. - -b Give the base DN to use. Default "o=sun,c=us". + -b Give the base DN to use. Default "dc=example,dc=com". -D Bind DN. See -w -E Max errors allowed. Default 1000. -e Execution parameters: @@ -68,6 +68,7 @@ usage: ldclt [-qQvV] [-E <max errors>] -I Ignore errors (cf. -E). Default none. -n Number of threads. Default 10. -N Number of samples (10 seconds each). Default infinite. + -o SASL Options. -p Server port. Default 389. -P Master port (to check replication). Default 16000. -q Quiet mode. See option -I. diff --git a/ldap/servers/slapd/tools/ldclt/ldcltU.c b/ldap/servers/slapd/tools/ldclt/ldcltU.c index 6f23dd1f..a91c74a5 100644 --- a/ldap/servers/slapd/tools/ldclt/ldcltU.c +++ b/ldap/servers/slapd/tools/ldclt/ldcltU.c @@ -32,7 +32,7 @@ * * * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission. - * Copyright (C) 2006 Red Hat, Inc. + * Copyright (C) 2007 Red Hat, Inc. * All rights reserved. * END COPYRIGHT BLOCK **/ @@ -47,7 +47,7 @@ /* * usage: ldclt [-qQvV] [-E <max errors>] * [-b <base DN>] [-h <host>] [-p <port>] [-t <timeout>] - * [-D <bind DN>] [-w <passwd>] + * [-D <bind DN>] [-w <passwd>] [-o <SASL option>] * [-e <execParams>] [-a <max pending>] * [-n <nb threads>] [-i <nb times>] [-N <nb samples>] * [-I <err number>] [-T <total>] @@ -61,7 +61,7 @@ * * The valid options are: * -a Asynchronous mode, with max pending operations. - * -b Give the base DN to use. Default "o=sun,c=us". + * -b Give the base DN to use. Default "dc=example,dc=com". * -D Bind DN. See -w * -E Max errors allowed. Default 1000. * -e Execution parameters: @@ -116,6 +116,7 @@ * -I Ignore errors (cf. -E). Default none. * -n Number of threads. Default 10. * -N Number of samples (10 seconds each). Default infinite. + * -o SASL Option. * -p Server port. Default 389. * -P Master port (to check replication). Default 16000. * -q Quiet mode. See option -I. @@ -137,7 +138,7 @@ void usage () (void) printf ("\n"); (void) printf ("usage: ldclt [-qQvV] [-E <max errors>]\n"); (void) printf (" [-b <base DN>] [-h <host>] [-p <port>] [-t <timeout>]\n"); - (void) printf (" [-D <bind DN>] [-w <passwd>]\n"); + (void) printf (" [-D <bind DN>] [-w <passwd>] [-o <SASL option>]\n"); (void) printf (" [-e <execParams>] [-a <max pending>]\n"); (void) printf (" [-n <nb threads>] [-i <nb times>] [-N <nb samples>]\n"); (void) printf (" [-I <err number>] [-T <total>]\n"); @@ -206,6 +207,7 @@ void usage () (void) printf (" -I Ignore errors (cf. -E). Default none.\n"); (void) printf (" -n Number of threads. Default 10.\n"); (void) printf (" -N Number of samples (10 seconds each). Default infinite.\n"); + (void) printf (" -o SASL Option.\n"); (void) printf (" -p Server port. Default 389.\n"); (void) printf (" -P Master port (to check replication). Default 16000.\n"); (void) printf (" -q Quiet mode. See option -I.\n"); diff --git a/ldap/servers/slapd/tools/ldclt/scalab01.c b/ldap/servers/slapd/tools/ldclt/scalab01.c index 7a8ed5c4..b4decae8 100644 --- a/ldap/servers/slapd/tools/ldclt/scalab01.c +++ b/ldap/servers/slapd/tools/ldclt/scalab01.c @@ -513,7 +513,6 @@ scalab01_connectSuperuser (void) /* * Create the LDAP context */ -#ifdef LDCLTSSL /* * SSL is enabled ? */ @@ -558,7 +557,6 @@ scalab01_connectSuperuser (void) } else { -#endif /* * Connection initialization in normal, unencrypted mode */ @@ -573,9 +571,7 @@ scalab01_connectSuperuser (void) fflush (stdout); return (-1); } -#ifdef LDCLTSSL } -#endif /* * Set the LDAP version and other options... @@ -598,7 +594,6 @@ scalab01_connectSuperuser (void) /* * Now we could bind */ -#ifdef LDCLTSSL /* * for SSL client authentication, SASL BIND is used */ @@ -620,7 +615,6 @@ scalab01_connectSuperuser (void) } else { -#endif /* LDCLTSSL */ strcpy (bindDN, SCALAB01_SUPER_USER_RDN); strcat (bindDN, ","); strcat (bindDN, mctx.baseDN); @@ -640,9 +634,7 @@ scalab01_connectSuperuser (void) fflush (stdout); return (-1); } -#ifdef LDCLTSSL } -#endif /* * Normal end... @@ -46,16 +46,10 @@ PACKAGE=libtool VERSION=1.5.22 TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi # Check that we have a working $echo. @@ -111,14 +105,12 @@ esac # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). # We save the old values to restore during execute mode. -for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - fi" -done +if test "${LC_ALL+set}" = set; then + save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL +fi +if test "${LANG+set}" = set; then + save_LANG="$LANG"; LANG=C; export LANG +fi # Make sure IFS has a sensible default lt_nl=' @@ -144,8 +136,6 @@ duplicate_deps=no preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 ##################################### # Shell function definitions: @@ -337,17 +327,7 @@ func_extract_archives () *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - extracted_serial=`expr $extracted_serial + 1` - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" + my_xdir="$my_gentop/$my_xlib" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" @@ -778,7 +758,6 @@ if test -z "$show_help"; then *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; - *.obj) xform=obj ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` @@ -1159,9 +1138,8 @@ EOF for arg do case $arg in - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) + -all-static | -static) + if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi @@ -1169,20 +1147,12 @@ EOF dlopen_self=$dlopen_self_static fi prefer_static_libs=yes - ;; - -static) + else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac + fi build_libtool_libs=no build_old_libs=yes break @@ -1742,7 +1712,7 @@ EOF continue ;; - -static | -static-libtool-libs) + -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects @@ -2520,9 +2490,7 @@ EOF if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. @@ -3218,7 +3186,7 @@ EOF # which has an extra 1 added just for fun # case $version_type in - darwin|linux|osf|windows|none) + darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" @@ -3442,11 +3410,11 @@ EOF fi # Eliminate all temporary directories. -# for path in $notinst_path; do -# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` -# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` -# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` -# done + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. @@ -3547,12 +3515,13 @@ EOF int main() { return 0; } EOF $rm conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then + $LTCC $LTCFLAGS -o conftest conftest.c $deplibs + if test "$?" -eq 0 ; then ldd_output=`ldd conftest` for i in $deplibs; do name=`expr $i : '-l\(.*\)'` # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then + if test "$name" != "" && test "$name" -ne "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) @@ -3591,7 +3560,9 @@ EOF # If $name is empty we are operating on a -L argument. if test "$name" != "" && test "$name" != "0"; then $rm conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $i; then + $LTCC $LTCFLAGS -o conftest conftest.c $i + # Did it work? + if test "$?" -eq 0 ; then ldd_output=`ldd conftest` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in @@ -3623,7 +3594,7 @@ EOF droppeddeps=yes $echo $echo "*** Warning! Library $i is needed by this library but I was not able to" - $echo "*** make it link in! You will probably need to install it or some" + $echo "*** make it link in! You will probably need to install it or some" $echo "*** library that it depends on before this library will be fully" $echo "*** functional. Installing it before continuing would be even better." fi @@ -4268,14 +4239,12 @@ EOF reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. + # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" generated="$generated $gentop" @@ -4723,16 +4692,16 @@ static const void *lt_preloaded_setup() { case $host in *cygwin* | *mingw* ) if test -f "$output_objdir/${outputname}.def" ; then - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` else - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` fi ;; * ) - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; esac ;; @@ -4747,13 +4716,13 @@ static const void *lt_preloaded_setup() { # really was required. # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. @@ -4840,7 +4809,7 @@ static const void *lt_preloaded_setup() { if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -4877,7 +4846,7 @@ static const void *lt_preloaded_setup() { fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. @@ -5284,18 +5253,6 @@ EOF Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi - # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @@ -5438,7 +5395,7 @@ else ;; esac $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \$*\" + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else @@ -5624,7 +5581,7 @@ fi\ done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi @@ -5969,9 +5926,9 @@ relink_command=\"$relink_command\"" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 @@ -6180,7 +6137,7 @@ relink_command=\"$relink_command\"" file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : @@ -6456,15 +6413,12 @@ relink_command=\"$relink_command\"" fi # Restore saved environment variables - for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" @@ -6821,9 +6775,9 @@ The following components of LINK-COMMAND are treated specially: -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE + try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX - try to export only the symbols matching REGEX + try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened @@ -6837,11 +6791,9 @@ The following components of LINK-COMMAND are treated specially: -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries + -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] + specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. |
