X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=clients%2Ftools%2Fldapmodify.c;h=2bb835a64e024741955d2575287384b4f76a59a9;hb=0825317a354b39efaea1c8927a1151c8780180fd;hp=e6fedb119863e75b6f86ebeaf01f1de21348e87a;hpb=1623b501a0d964c0f54ce913f4f46a56c0bc0c57;p=openldap diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c index e6fedb1198..2bb835a64e 100644 --- a/clients/tools/ldapmodify.c +++ b/clients/tools/ldapmodify.c @@ -159,7 +159,9 @@ main( int argc, char **argv ) authmethod = -1; version = -1; - while (( i = getopt( argc, argv, "acrf:F" "Cd:D:h:H:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) { + while (( i = getopt( argc, argv, "acrf:F" + "Cd:D:h:H:IkKMnO:p:P:QR:U:vw:WxX:Y:Z" )) != EOF ) + { switch( i ) { /* Modify Options */ case 'a': /* add */ @@ -170,7 +172,7 @@ main( int argc, char **argv ) break; case 'f': /* read from file */ if( infile != NULL ) { - fprintf( stderr, "%s: -f previously specified\n" ); + fprintf( stderr, "%s: -f previously specified\n", prog ); return EXIT_FAILURE; } infile = strdup( optarg ); @@ -191,33 +193,33 @@ main( int argc, char **argv ) break; case 'D': /* bind DN */ if( binddn != NULL ) { - fprintf( stderr, "%s: -D previously specified\n" ); + fprintf( stderr, "%s: -D previously specified\n", prog ); return EXIT_FAILURE; } binddn = strdup( optarg ); break; case 'h': /* ldap host */ if( ldapuri != NULL ) { - fprintf( stderr, "%s: -h incompatible with -H\n" ); + fprintf( stderr, "%s: -h incompatible with -H\n", prog ); return EXIT_FAILURE; } if( ldaphost != NULL ) { - fprintf( stderr, "%s: -h previously specified\n" ); + fprintf( stderr, "%s: -h previously specified\n", prog ); return EXIT_FAILURE; } ldaphost = strdup( optarg ); break; case 'H': /* ldap URI */ if( ldaphost != NULL ) { - fprintf( stderr, "%s: -H incompatible with -h\n" ); + fprintf( stderr, "%s: -H incompatible with -h\n", prog ); return EXIT_FAILURE; } if( ldapport ) { - fprintf( stderr, "%s: -H incompatible with -p\n" ); + fprintf( stderr, "%s: -H incompatible with -p\n", prog ); return EXIT_FAILURE; } if( ldapuri != NULL ) { - fprintf( stderr, "%s: -H previously specified\n" ); + fprintf( stderr, "%s: -H previously specified\n", prog ); return EXIT_FAILURE; } ldapuri = strdup( optarg ); @@ -299,7 +301,7 @@ main( int argc, char **argv ) case 'O': #ifdef HAVE_CYRUS_SASL if( sasl_secprops != NULL ) { - fprintf( stderr, "%s: -O previously specified\n" ); + fprintf( stderr, "%s: -O previously specified\n", prog ); return EXIT_FAILURE; } if( version == LDAP_VERSION2 ) { @@ -323,7 +325,7 @@ main( int argc, char **argv ) break; case 'p': if( ldapport ) { - fprintf( stderr, "%s: -p previously specified\n" ); + fprintf( stderr, "%s: -p previously specified\n", prog ); return EXIT_FAILURE; } ldapport = atoi( optarg ); @@ -377,7 +379,7 @@ main( int argc, char **argv ) case 'R': #ifdef HAVE_CYRUS_SASL if( sasl_realm != NULL ) { - fprintf( stderr, "%s: -R previously specified\n" ); + fprintf( stderr, "%s: -R previously specified\n", prog ); return EXIT_FAILURE; } if( version == LDAP_VERSION2 ) { @@ -403,7 +405,7 @@ main( int argc, char **argv ) case 'U': #ifdef HAVE_CYRUS_SASL if( sasl_authc_id != NULL ) { - fprintf( stderr, "%s: -U previously specified\n" ); + fprintf( stderr, "%s: -U previously specified\n", prog ); return EXIT_FAILURE; } if( version == LDAP_VERSION2 ) { @@ -446,7 +448,7 @@ main( int argc, char **argv ) case 'Y': #ifdef HAVE_CYRUS_SASL if( sasl_mech != NULL ) { - fprintf( stderr, "%s: -Y previously specified\n" ); + fprintf( stderr, "%s: -Y previously specified\n", prog ); return EXIT_FAILURE; } if( version == LDAP_VERSION2 ) { @@ -478,7 +480,7 @@ main( int argc, char **argv ) case 'X': #ifdef HAVE_CYRUS_SASL if( sasl_authz_id != NULL ) { - fprintf( stderr, "%s: -X previously specified\n" ); + fprintf( stderr, "%s: -X previously specified\n", prog ); return EXIT_FAILURE; } if( version == LDAP_VERSION2 ) { @@ -516,7 +518,7 @@ main( int argc, char **argv ) #endif break; default: - fprintf( stderr, "%s: unrecongized option -%c\n", + fprintf( stderr, "%s: unrecognized option -%c\n", prog, optopt ); usage( prog ); } @@ -566,20 +568,25 @@ main( int argc, char **argv ) ldaphost != NULL ? ldaphost : "", ldapport ); } + ld = ldap_init( ldaphost, ldapport ); + if( ld == NULL ) { + perror("ldapsearch: ldap_init"); + return EXIT_FAILURE; + } } else { if ( verbose ) { fprintf( stderr, "ldap_initialize( %s )\n", ldapuri != NULL ? ldapuri : "" ); } - (void) ldap_initialize( &ld, ldapuri ); - } - if( ld == NULL ) { - fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", - rc, ldap_err2string(rc) ); - return EXIT_FAILURE; + rc = ldap_initialize( &ld, ldapuri ); + if( rc != LDAP_SUCCESS ) { + fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", + rc, ldap_err2string(rc) ); + return EXIT_FAILURE; + } } /* referrals */ @@ -1015,6 +1022,16 @@ domodify( fprintf( stderr, "%s: no attributes to change or add (entry=\"%s\")\n", prog, dn ); return( LDAP_PARAM_ERROR ); + } + + for ( i = 0; pmods[ i ] != NULL; ++i ) { + op = pmods[ i ]->mod_op & ~LDAP_MOD_BVALUES; + if( op == LDAP_MOD_ADD && ( pmods[i]->mod_bvalues == NULL )) { + fprintf( stderr, + "%s: attribute \"%s\" has no values (entry=\"%s\")\n", + prog, pmods[i]->mod_type, dn ); + return LDAP_PARAM_ERROR; + } } if ( verbose ) {