use slab memory for proxyauthz

This commit is contained in:
Pierangelo Masarati 2006-01-09 20:00:51 +00:00
parent 13fdab9509
commit f3c2c7ba48

View File

@ -1405,8 +1405,9 @@ ldap_back_proxy_authz_ctrl(
/* just count ctrls */ ; /* just count ctrls */ ;
} }
ctrls = ch_malloc( sizeof( LDAPControl * ) * (i + 2) ); ctrls = op->o_tmpalloc( sizeof( LDAPControl * ) * (i + 2) + sizeof( LDAPControl ),
ctrls[ 0 ] = ch_malloc( sizeof( LDAPControl ) ); op->o_tmpmemctx );
ctrls[ 0 ] = (LDAPControl *)&ctrls[ i + 2 ];
ctrls[ 0 ]->ldctl_oid = LDAP_CONTROL_PROXY_AUTHZ; ctrls[ 0 ]->ldctl_oid = LDAP_CONTROL_PROXY_AUTHZ;
ctrls[ 0 ]->ldctl_iscritical = 1; ctrls[ 0 ]->ldctl_iscritical = 1;
@ -1415,13 +1416,14 @@ ldap_back_proxy_authz_ctrl(
/* already in u:ID or dn:DN form */ /* already in u:ID or dn:DN form */
case LDAP_BACK_IDASSERT_OTHERID: case LDAP_BACK_IDASSERT_OTHERID:
case LDAP_BACK_IDASSERT_OTHERDN: case LDAP_BACK_IDASSERT_OTHERDN:
ber_dupbv( &ctrls[ 0 ]->ldctl_value, &assertedID ); ber_dupbv_x( &ctrls[ 0 ]->ldctl_value, &assertedID, op->o_tmpmemctx );
break; break;
/* needs the dn: prefix */ /* needs the dn: prefix */
default: default:
ctrls[ 0 ]->ldctl_value.bv_len = assertedID.bv_len + STRLENOF( "dn:" ); ctrls[ 0 ]->ldctl_value.bv_len = assertedID.bv_len + STRLENOF( "dn:" );
ctrls[ 0 ]->ldctl_value.bv_val = ch_malloc( ctrls[ 0 ]->ldctl_value.bv_len + 1 ); ctrls[ 0 ]->ldctl_value.bv_val = op->o_tmpalloc( ctrls[ 0 ]->ldctl_value.bv_len + 1,
op->o_tmpmemctx );
AC_MEMCPY( ctrls[ 0 ]->ldctl_value.bv_val, "dn:", STRLENOF( "dn:" ) ); AC_MEMCPY( ctrls[ 0 ]->ldctl_value.bv_val, "dn:", STRLENOF( "dn:" ) );
AC_MEMCPY( &ctrls[ 0 ]->ldctl_value.bv_val[ STRLENOF( "dn:" ) ], AC_MEMCPY( &ctrls[ 0 ]->ldctl_value.bv_val[ STRLENOF( "dn:" ) ],
assertedID.bv_val, assertedID.bv_len + 1 ); assertedID.bv_val, assertedID.bv_len + 1 );
@ -1457,11 +1459,10 @@ ldap_back_proxy_authz_ctrl_free( Operation *op, LDAPControl ***pctrls )
assert( ctrls[ 0 ] != NULL ); assert( ctrls[ 0 ] != NULL );
if ( !BER_BVISNULL( &ctrls[ 0 ]->ldctl_value ) ) { if ( !BER_BVISNULL( &ctrls[ 0 ]->ldctl_value ) ) {
free( ctrls[ 0 ]->ldctl_value.bv_val ); op->o_tmpfree( ctrls[ 0 ]->ldctl_value.bv_val, op->o_tmpmemctx );
} }
free( ctrls[ 0 ] ); op->o_tmpfree( ctrls, op->o_tmpmemctx );
free( ctrls );
} }
*pctrls = NULL; *pctrls = NULL;