From 20e6dcec3be9a8a46d990b8fd1446c23b2aec08b Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 4 Jul 2000 21:49:00 +0000 Subject: [PATCH] Improved but still broken client tools. --- clients/tools/ldapdelete.c | 19 ++++++++++++------- clients/tools/ldapmodrdn.c | 20 +++++++++++++------- clients/tools/ldappasswd.c | 2 +- clients/tools/ldapsearch.c | 7 +++++-- include/ldap.h | 4 ++-- libraries/libldap/error.c | 3 +-- libraries/libldap/result.c | 14 ++++++++------ tests/scripts/test005-modrdn | 26 +++++++++++++------------- 8 files changed, 55 insertions(+), 40 deletions(-) diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 14fb945969..4b068df7f5 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -456,25 +456,30 @@ static int dodelete( rc = ldap_delete_ext( ld, dn, NULL, NULL, &id ); if ( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_delete_ext" ); + fprintf( stderr, "ldapdelete: ldap_delete_ext: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } - rc = ldap_result( ld, LDAP_RES_ANY, 0, NULL, &res ); + rc = ldap_result( ld, LDAP_RES_ANY, LDAP_MSG_ALL, NULL, &res ); if ( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_result" ); + fprintf( stderr, "ldapdelete: ldap_result: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, NULL, 1 ); if( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_parse_result" ); + fprintf( stderr, "ldapdelete: ldap_parse_result: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } - if( verbose || code != LDAP_SUCCESS || matcheddn || text || refs ) { - printf( "Result: %s (%d)\n", ldap_err2string( code ), code ); + if( verbose || code != LDAP_SUCCESS || + (matcheddn && *matcheddn) || (text && *text) || (refs && *refs) ) + { + printf( "Delete Result: %s (%d)\n", ldap_err2string( code ), code ); if( text && *text ) { printf( "Additional info: %s\n", text ); @@ -494,7 +499,7 @@ static int dodelete( ber_memfree( text ); ber_memfree( matcheddn ); - ber_memvfree( refs ); + ber_memvfree( (void **) refs ); return code; } diff --git a/clients/tools/ldapmodrdn.c b/clients/tools/ldapmodrdn.c index b29e17cd0c..9905d0f2c6 100644 --- a/clients/tools/ldapmodrdn.c +++ b/clients/tools/ldapmodrdn.c @@ -509,25 +509,31 @@ static int domodrdn( NULL, NULL, &id ); if ( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_rename" ); + fprintf( stderr, "ldapmodrdn: ldap_rename: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } - rc = ldap_result( ld, LDAP_RES_ANY, 0, NULL, &res ); + rc = ldap_result( ld, LDAP_RES_ANY, LDAP_MSG_ALL, NULL, &res ); if ( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_result" ); + fprintf( stderr, "ldapmodrdn: ldap_result: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, NULL, 1 ); if( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_parse_result" ); + fprintf( stderr, "ldapmodrdn: ldap_parse_result: %s (%d)\n", + ldap_err2string( rc ), rc ); return rc; } - if( verbose || code != LDAP_SUCCESS || matcheddn || text || refs ) { - printf( "Result: %s (%d)\n", ldap_err2string( code ), code ); + if( verbose || code != LDAP_SUCCESS || + (matcheddn && *matcheddn) || (text && *text) || (refs && *refs) ) + { + printf( "Rename Result: %s (%d)\n", + ldap_err2string( code ), code ); if( text && *text ) { printf( "Additional info: %s\n", text ); @@ -547,7 +553,7 @@ static int domodrdn( ber_memfree( text ); ber_memfree( matcheddn ); - ber_memvfree( refs ); + ber_memvfree( (void **) refs ); return code; } diff --git a/clients/tools/ldappasswd.c b/clients/tools/ldappasswd.c index 96e898afd2..c61c6e5eec 100644 --- a/clients/tools/ldappasswd.c +++ b/clients/tools/ldappasswd.c @@ -449,7 +449,7 @@ main( int argc, char *argv[] ) return EXIT_FAILURE; } - rc = ldap_result( ld, LDAP_RES_ANY, 0, NULL, &res ); + rc = ldap_result( ld, LDAP_RES_ANY, LDAP_MSG_ALL, NULL, &res ); if ( rc != LDAP_SUCCESS ) { ldap_perror( ld, "ldap_result" ); return rc; diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index 0bd21c266f..0b8ca33c31 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -713,15 +713,18 @@ static int dosearch( sctrls, cctrls, timelimit, sizelimit, &msgid ); if( rc != LDAP_SUCCESS ) { - ldap_perror( ld, "ldap_search" ); + fprintf( stderr, "ldapsearch: ldap_search_ext: %s (%d)", + ldap_err2string( rc ), rc ); return( rc ); } nresponses = nentries = nreferences = nextended = npartial = 0; res = NULL; + while ((rc = ldap_result( ld, LDAP_RES_ANY, - sortattr ? 1 : 0, NULL, &res )) > 0 ) + sortattr ? LDAP_MSG_ALL : LDAP_MSG_ONE, + NULL, &res )) > 0 ) { if( sortattr ) { (void) ldap_sort_entries( ld, &res, diff --git a/include/ldap.h b/include/ldap.h index ccb0f4aa28..a46f0858ba 100644 --- a/include/ldap.h +++ b/include/ldap.h @@ -266,8 +266,8 @@ typedef struct ldapcontrol { #define LDAP_RES_EXTENDED ((ber_tag_t) 0x78U) /* V3: application + constructed */ #define LDAP_RES_EXTENDED_PARTIAL ((ber_tag_t) 0x79U) /* V3+: application + constructed */ -#define LDAP_RES_ANY ((ber_tag_t)(-1)) -#define LDAP_RES_UNSOLICITED ((ber_tag_t)(0)) +#define LDAP_RES_ANY (-1) +#define LDAP_RES_UNSOLICITED (0) /* sasl methods */ diff --git a/libraries/libldap/error.c b/libraries/libldap/error.c index 8594c849af..90fcac082f 100644 --- a/libraries/libldap/error.c +++ b/libraries/libldap/error.c @@ -211,7 +211,6 @@ ldap_parse_result( LDAPMessage *lm; ber_int_t errcode = LDAP_SUCCESS; - int rc; ber_tag_t tag; BerElement *ber; @@ -307,7 +306,7 @@ ldap_parse_result( } if( tag != LBER_ERROR ) { - rc = ldap_int_get_controls( ber, serverctrls ); + int rc = ldap_int_get_controls( ber, serverctrls ); if( rc != LDAP_SUCCESS ) { tag = LBER_ERROR; diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c index 3d326ca7c5..5ef39bb8cd 100644 --- a/libraries/libldap/result.c +++ b/libraries/libldap/result.c @@ -67,12 +67,14 @@ static void merge_error_info LDAP_P(( LDAP *ld, LDAPRequest *parentr, LDAPReques /* * ldap_result - wait for an ldap result response to a message from the - * ldap server. If msgid is -1, any message will be accepted, otherwise - * ldap_result will wait for a response with msgid. If all is 0 the - * first message with id msgid will be accepted, otherwise, ldap_result - * will wait for all responses with id msgid and then return a pointer to - * the entire list of messages. This is only useful for search responses, - * which can be of two message types (zero or more entries, followed by an + * ldap server. If msgid is LDAP_RES_ANY (-1), any message will be + * accepted. If msgid is LDAP_RES_UNSOLICITED (0), any unsolicited + * message is accepted. Otherwise ldap_result will wait for a response + * with msgid. If all is LDAP_MSG_ONE (0) the first message with id + * msgid will be accepted, otherwise, ldap_result will wait for all + * responses with id msgid and then return a pointer to the entire list + * of messages. This is only useful for search responses, which can be + * of two message types (zero or more entries, followed by an * ldap result). The type of the first message received is returned. * When waiting, any messages that have been abandoned are discarded. * diff --git a/tests/scripts/test005-modrdn b/tests/scripts/test005-modrdn index ca5b98bea1..f72ccfdf6a 100755 --- a/tests/scripts/test005-modrdn +++ b/tests/scripts/test005-modrdn @@ -21,7 +21,7 @@ echo "Running slapadd to build slapd database..." $LDIF2LDBM -f $CONF -l $LDIF RC=$? if test $RC != 0 ; then - echo "slapadd failed!" + echo "slapadd failed ($RC)!" exit $RC fi @@ -42,7 +42,7 @@ for i in 0 1 2 3 4 5; do done if test $RC != 0 ; then - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" kill -HUP $PID exit $RC fi @@ -50,23 +50,23 @@ fi # -r used to do remove of old rdn echo "Testing modrdn(deleteoldrdn=0)..." -$LDAPMODRDN -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \ +$LDAPMODRDN -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \ $TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones III' RC=$? if test $RC != 0 ; then - echo "ldapmodrdn failed!" + echo "ldapmodrdn failed ($RC)!" kill -HUP $PID exit $RC fi echo "Testing modrdn(deleteoldrdn=1)..." -$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD >> \ +$LDAPMODRDN -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD >> \ $TESTOUT 2>&1 'cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US' 'cn=James A Jones II' RC=$? if test $RC != 0 ; then - echo "ldapmodrdn failed!" + echo "ldapmodrdn failed ($RC)!" kill -HUP $PID exit $RC fi @@ -78,7 +78,7 @@ $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \ 'cn=James A Jones III' > $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" kill -HUP $PID exit $RC fi @@ -105,7 +105,7 @@ $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \ 'cn=James A Jones II' > $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" kill -HUP $PID exit $RC fi @@ -135,7 +135,7 @@ $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \ RC=$? if test $RC != 0 ; then kill -HUP $PID - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" exit $RC fi $CMP $SEARCHOUT /dev/null @@ -151,7 +151,7 @@ $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \ RC=$? if test $RC != 0 ; then kill -HUP $PID - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" exit $RC fi @@ -172,12 +172,12 @@ fi echo "Testing modrdn(deleteoldrdn=1), modrdn with new rdn already an att val..." -$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD > \ +$LDAPMODRDN -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD > \ /dev/null 2>&1 'cn=James A Jones III, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones 1' RC=$? if test $RC != 0 ; then - echo "ldapmodrdn failed!" + echo "ldapmodrdn failed ($RC)!" kill -HUP $PID exit $RC fi @@ -190,7 +190,7 @@ $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \ 'cn=James A Jones 1' > $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed!" + echo "ldapsearch failed ($RC)!" kill -HUP $PID exit $RC fi -- 2.39.5