From: Kurt Zeilenga Date: Mon, 10 Feb 2003 20:16:05 +0000 (+0000) Subject: version checking and empty nvals fix X-Git-Tag: OPENLDAP_REL_ENG_2_1_13~36 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=801bf7f56179fcc2fdfc0e85e0efa46d89d6f1ad;p=openldap version checking and empty nvals fix --- diff --git a/clients/tools/Makefile.in b/clients/tools/Makefile.in index 83c83d12fd..7685d1292e 100644 --- a/clients/tools/Makefile.in +++ b/clients/tools/Makefile.in @@ -18,7 +18,7 @@ XXLIBS = $(SECURITY_LIBS) $(LDIF_LIBS) $(LUTIL_LIBS) XSRCS = ldsversion.c ldmversion.c lddversion.c ldrversion.c \ ldpversion.c ldwversion.c ldcversion.c -PROGRAMS = ldapsearch ldapmodify ldapdelete ldapmodrdn ldapadd \ +PROGRAMS = ldapsearch ldapmodify ldapdelete ldapmodrdn \ ldappasswd ldapwhoami ldapcompare @@ -43,11 +43,6 @@ ldapwhoami: ldwversion.o ldapcompare: ldcversion.o $(LTLINK) -o $@ ldapcompare.o common.o ldcversion.o $(LIBS) -ldapadd: ldapmodify - @-$(RM) $@$(EXEEXT) - $(LN_H) ldapmodify$(EXEEXT) ldapadd$(EXEEXT) - - ldsversion.c: ldapsearch.o common.o $(XLIBS) @-$(RM) $@ $(MKVERSION) $(MKVOPTS) ldapsearch > $@ diff --git a/clients/tools/common.c b/clients/tools/common.c index 3b4983336c..2600d67a9e 100644 --- a/clients/tools/common.c +++ b/clients/tools/common.c @@ -455,9 +455,52 @@ tool_args( int argc, char **argv ) } } - if (version) { - fprintf( stderr, "%s: %s", prog, __Version ); - if (version > 1) exit( EXIT_SUCCESS ); + { + /* prevent bad linking */ + LDAPAPIInfo api; + api.ldapai_info_version = LDAP_API_INFO_VERSION; + + if ( ldap_get_option(NULL, LDAP_OPT_API_INFO, &api) + != LDAP_OPT_SUCCESS ) + { + fprintf( stderr, "%s: ldap_get_option(API_INFO) failed\n", prog ); + exit( EXIT_FAILURE ); + } + + if (api.ldapai_info_version != LDAP_API_INFO_VERSION) { + fprintf( stderr, "LDAP APIInfo version mismatch: " + "got %d, expected %d\n", + api.ldapai_info_version, LDAP_API_INFO_VERSION ); + exit( EXIT_FAILURE ); + } + + if( api.ldapai_api_version != LDAP_API_VERSION ) { + fprintf( stderr, "LDAP API version mismatch: " + "got %d, expected %d\n", + api.ldapai_api_version, LDAP_API_VERSION ); + exit( EXIT_FAILURE ); + } + + if( strcmp(api.ldapai_vendor_name, LDAP_VENDOR_NAME ) != 0 ) { + fprintf( stderr, "LDAP vendor name mismatch: " + "got %s, expected %s\n", + api.ldapai_vendor_name, LDAP_VENDOR_NAME ); + exit( EXIT_FAILURE ); + } + + if( api.ldapai_vendor_version != LDAP_VENDOR_VERSION ) { + fprintf( stderr, "LDAP vendor version mismatch: " + "got %d, expected %d\n", + api.ldapai_vendor_version, LDAP_VENDOR_VERSION ); + exit( EXIT_FAILURE ); + } + + if (version) { + fprintf( stderr, "%s: %s\t(LDAP library: %s %d)\n", + prog, __Version, + LDAP_VENDOR_NAME, LDAP_VENDOR_VERSION ); + if (version > 1) exit( EXIT_SUCCESS ); + } } if (protocol == -1) diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index ee7611c6a4..67beac471e 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -1313,7 +1313,7 @@ print_entry( { if (bv.bv_val == NULL) break; - if ( attrsonly ) { + if ( attrsonly || !bvals ) { write_ldif( LDIF_PUT_NOVALUE, bv.bv_val, NULL, 0 ); } else {