]> git.sur5r.net Git - openldap/blobdiff - tests/progs/slapd-addel.c
Merge remote branch 'origin/mdb.master'
[openldap] / tests / progs / slapd-addel.c
index f199eab12e2b937b6099f083e78e017711ea9afb..9445282e910e322763a75ddf6026651e07263679 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2006 The OpenLDAP Foundation.
+ * Copyright 1999-2012 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 
 #include <stdio.h>
 
-#include <ac/stdlib.h>
+#include "ac/stdlib.h"
 
-#include <ac/ctype.h>
-#include <ac/param.h>
-#include <ac/socket.h>
-#include <ac/string.h>
-#include <ac/unistd.h>
-#include <ac/wait.h>
+#include "ac/ctype.h"
+#include "ac/param.h"
+#include "ac/socket.h"
+#include "ac/string.h"
+#include "ac/unistd.h"
+#include "ac/wait.h"
 
-#include <ldap.h>
-#include <lutil.h>
+#include "ldap.h"
+#include "lutil.h"
 
 #include "slapd-common.h"
 
@@ -55,6 +55,7 @@ usage( char *name )
                "-D <manager> "
                "-w <passwd> "
                "-f <addfile> "
+               "[-i <ignore>] "
                "[-l <loops>] "
                "[-L <outerloops>] "
                "[-r <maxretries>] "
@@ -84,10 +85,11 @@ main( int argc, char **argv )
        int             chaserefs = 0;
        LDAPMod         **attrs = NULL;
 
-       tester_init( "slapd-modify" );
+       tester_init( "slapd-addel", TESTER_ADDEL );
 
-       while ( (i = getopt( argc, argv, "CFH:h:p:D:w:f:l:L:r:t:" )) != EOF ) {
-               switch( i ) {
+       while ( ( i = getopt( argc, argv, "CD:Ff:H:h:i:L:l:p:r:t:w:" ) ) != EOF )
+       {
+               switch ( i ) {
                case 'C':
                        chaserefs++;
                        break;
@@ -104,6 +106,10 @@ main( int argc, char **argv )
                        host = strdup( optarg );
                        break;
 
+               case 'i':
+                       /* ignored (!) by now */
+                       break;
+
                case 'p':               /* the servers port */
                        if ( lutil_atoi( &port, optarg ) != 0 ) {
                                usage( argv[0] );
@@ -117,6 +123,7 @@ main( int argc, char **argv )
                case 'w':               /* the server managers password */
                        passwd.bv_val = strdup( optarg );
                        passwd.bv_len = strlen( optarg );
+                       memset( optarg, '*', passwd.bv_len );
                        break;
 
                case 'f':               /* file with entry search request */
@@ -208,19 +215,19 @@ addmodifyop( LDAPMod ***pmodsp, int modop, char *attr, char *value, int vlen )
     if ( pmods == NULL || pmods[ i ] == NULL ) {
                if (( pmods = (LDAPMod **)realloc( pmods, (i + 2) *
                        sizeof( LDAPMod * ))) == NULL ) {
-                       tester_perror( "realloc" );
+                       tester_perror( "realloc", NULL );
                        exit( EXIT_FAILURE );
                }
                *pmodsp = pmods;
                pmods[ i + 1 ] = NULL;
                if (( pmods[ i ] = (LDAPMod *)calloc( 1, sizeof( LDAPMod )))
                        == NULL ) {
-                       tester_perror( "calloc" );
+                       tester_perror( "calloc", NULL );
                        exit( EXIT_FAILURE );
                }
                pmods[ i ]->mod_op = modop;
                if (( pmods[ i ]->mod_type = strdup( attr )) == NULL ) {
-               tester_perror( "strdup" );
+               tester_perror( "strdup", NULL );
                exit( EXIT_FAILURE );
                }
     }
@@ -235,20 +242,20 @@ addmodifyop( LDAPMod ***pmodsp, int modop, char *attr, char *value, int vlen )
                if (( pmods[ i ]->mod_bvalues =
                        (struct berval **)ber_memrealloc( pmods[ i ]->mod_bvalues,
                        (j + 2) * sizeof( struct berval * ))) == NULL ) {
-                       tester_perror( "ber_memrealloc" );
+                       tester_perror( "ber_memrealloc", NULL );
                        exit( EXIT_FAILURE );
                }
                pmods[ i ]->mod_bvalues[ j + 1 ] = NULL;
                if (( bvp = (struct berval *)ber_memalloc( sizeof( struct berval )))
                        == NULL ) {
-                       tester_perror( "ber_memalloc" );
+                       tester_perror( "ber_memalloc", NULL );
                        exit( EXIT_FAILURE );
                }
                pmods[ i ]->mod_bvalues[ j ] = bvp;
 
            bvp->bv_len = vlen;
            if (( bvp->bv_val = (char *)malloc( vlen + 1 )) == NULL ) {
-                       tester_perror( "malloc" );
+                       tester_perror( "malloc", NULL );
                        exit( EXIT_FAILURE );
            }
            AC_MEMCPY( bvp->bv_val, value, vlen );
@@ -271,7 +278,10 @@ get_add_entry( char *filename, LDAPMod ***mods )
 
                        if (( nl = strchr( line, '\r' )) || ( nl = strchr( line, '\n' )))
                                *nl = '\0';
-                       entry = strdup( line );
+                       nl = line;
+                       if ( !strncasecmp( nl, "dn: ", 4 ))
+                               nl += 4;
+                       entry = strdup( nl );
 
                }
 
@@ -314,14 +324,13 @@ do_addel(
 {
        LDAP    *ld = NULL;
        int     i = 0, do_retry = maxretries;
-       pid_t   pid = getpid();
        int     rc = LDAP_SUCCESS;
        int     version = LDAP_VERSION3;
 
 retry:;
        ldap_initialize( &ld, uri );
        if ( ld == NULL ) {
-               tester_perror( "ldap_initialize" );
+               tester_perror( "ldap_initialize", NULL );
                exit( EXIT_FAILURE );
        }
 
@@ -336,7 +345,7 @@ retry:;
 
        rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
        if ( rc != LDAP_SUCCESS ) {
-               tester_ldap_error( ld, "ldap_sasl_bind_s" );
+               tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
                switch ( rc ) {
                case LDAP_BUSY:
                case LDAP_UNAVAILABLE:
@@ -359,7 +368,7 @@ retry:;
                /* add the entry */
                rc = ldap_add_ext_s( ld, entry, attrs, NULL, NULL );
                if ( rc != LDAP_SUCCESS ) {
-                       tester_ldap_error( ld, "ldap_add_ext_s" );
+                       tester_ldap_error( ld, "ldap_add_ext_s", NULL );
                        switch ( rc ) {
                        case LDAP_ALREADY_EXISTS:
                                /* NOTE: this likely means
@@ -392,7 +401,7 @@ retry:;
                /* now delete the entry again */
                rc = ldap_delete_ext_s( ld, entry, NULL, NULL );
                if ( rc != LDAP_SUCCESS ) {
-                       tester_ldap_error( ld, "ldap_delete_ext_s" );
+                       tester_ldap_error( ld, "ldap_delete_ext_s", NULL );
                        switch ( rc ) {
                        case LDAP_NO_SUCH_OBJECT:
                                /* NOTE: this likely means
@@ -418,7 +427,7 @@ retry:;
        }
 
 done:;
-       fprintf( stderr, " PID=%ld - Add/Delete done (%d).\n", (long) pid, rc );
+       fprintf( stderr, "  PID=%ld - Add/Delete done (%d).\n", (long) pid, rc );
 
        ldap_unbind_ext( ld, NULL, NULL );
 }