X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapauth.c;h=6e61ff163e68dc6d3a960ef3e413e6a4e0f0c716;hb=173330187ef1a4139e2e4c4fb30ad23832e40f77;hp=06dd27709d50529250e30993ec36cf8d866e26b0;hpb=90cc4093255c3f0506df9d1d6064db4002861bc1;p=openldap diff --git a/servers/slapd/slapauth.c b/servers/slapd/slapauth.c index 06dd27709d..6e61ff163e 100644 --- a/servers/slapd/slapauth.c +++ b/servers/slapd/slapauth.c @@ -1,6 +1,6 @@ /* This work is part of OpenLDAP Software . * - * Copyright 2004 The OpenLDAP Foundation. + * Copyright 2004-2005 The OpenLDAP Foundation. * Portions Copyright 2004 Pierangelo Masarati. * All rights reserved. * @@ -40,7 +40,7 @@ do_check( Connection *c, Operation *op, struct berval *id ) struct berval authcdn; int rc; - rc = slap_sasl_getdn( c, op, id, NULL, &authcdn, SLAP_GETDN_AUTHCID ); + rc = slap_sasl_getdn( c, op, id, realm, &authcdn, SLAP_GETDN_AUTHCID ); if ( rc != LDAP_SUCCESS ) { fprintf( stderr, "ID: <%s> check failed %d (%s)\n", id->bv_val, rc, @@ -80,20 +80,23 @@ slapauth( int argc, char **argv ) int rc = EXIT_SUCCESS; const char *progname = "slapauth"; Connection conn = {0}; - Operation op = {0}; - Opheader ohdr = {0}; + char opbuf[OPERATION_BUFFER_SIZE]; + Operation *op; slap_tool_init( progname, SLAPAUTH, argc, argv ); argv = &argv[ optind ]; argc -= optind; - connection_fake_init( &conn, &op, &ohdr, &conn ); + op = (Operation *)opbuf; + connection_fake_init( &conn, op, &conn ); + + conn.c_sasl_bind_mech = mech; if ( !BER_BVISNULL( &authzID ) ) { struct berval authzdn; - rc = slap_sasl_getdn( &conn, &op, &authzID, NULL, &authzdn, + rc = slap_sasl_getdn( &conn, op, &authzID, NULL, &authzdn, SLAP_GETDN_AUTHZID ); if ( rc != LDAP_SUCCESS ) { fprintf( stderr, "authzID: <%s> check failed %d (%s)\n", @@ -110,7 +113,7 @@ slapauth( int argc, char **argv ) if ( !BER_BVISNULL( &authcID ) ) { if ( !BER_BVISNULL( &authzID ) || argc == 0 ) { - rc = do_check( &conn, &op, &authcID ); + rc = do_check( &conn, op, &authcID ); goto destroy; } @@ -119,7 +122,7 @@ slapauth( int argc, char **argv ) ber_str2bv( argv[ 0 ], 0, 0, &authzID ); - rc = slap_sasl_getdn( &conn, &op, &authzID, NULL, &authzdn, + rc = slap_sasl_getdn( &conn, op, &authzID, NULL, &authzdn, SLAP_GETDN_AUTHZID ); if ( rc != LDAP_SUCCESS ) { fprintf( stderr, "authzID: <%s> check failed %d (%s)\n", @@ -134,9 +137,9 @@ slapauth( int argc, char **argv ) authzID = authzdn; - rc = do_check( &conn, &op, &authcID ); + rc = do_check( &conn, op, &authcID ); - op.o_tmpfree( authzID.bv_val, op.o_tmpmemctx ); + op->o_tmpfree( authzID.bv_val, op->o_tmpmemctx ); BER_BVZERO( &authzID ); if ( rc && !continuemode ) { @@ -152,7 +155,7 @@ slapauth( int argc, char **argv ) ber_str2bv( argv[ 0 ], 0, 0, &id ); - rc = do_check( &conn, &op, &id ); + rc = do_check( &conn, op, &id ); if ( rc && !continuemode ) { goto destroy; @@ -161,7 +164,7 @@ slapauth( int argc, char **argv ) destroy:; if ( !BER_BVISNULL( &authzID ) ) { - op.o_tmpfree( authzID.bv_val, op.o_tmpmemctx ); + op->o_tmpfree( authzID.bv_val, op->o_tmpmemctx ); } slap_tool_destroy();