)
{
struct shellinfo *si = (struct shellinfo *) be->be_private;
+ AttributeDescription *entry = slap_schema.si_ad_entry;
+ Entry e;
FILE *rfp, *wfp;
int rc;
return( -1 );
}
+ e.e_id = NOID;
+ e.e_name = *dn;
+ e.e_nname = *ndn;
+ e.e_attrs = NULL;
+ e.e_ocflags = 0;
+ e.e_bv.bv_len = 0;
+ e.e_bv.bv_val = NULL;
+ e.e_private = NULL;
+
+ if ( ! access_allowed( be, conn, op, &e,
+ entry, NULL, ACL_AUTH, NULL ) )
+ {
+ send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+ NULL, NULL, NULL, NULL );
+ return -1;
+ }
+
if ( (op->o_private = (void *) forkandexec( si->si_bind, &rfp, &wfp ))
== (void *) -1 ) {
send_ldap_result( conn, op, LDAP_OTHER, NULL,
)
{
struct shellinfo *si = (struct shellinfo *) be->be_private;
+ AttributeDescription *entry = slap_schema.si_ad_entry;
+ Entry e;
FILE *rfp, *wfp;
if ( IS_NULLCMD( si->si_compare ) ) {
return( -1 );
}
+ e.e_id = NOID;
+ e.e_name = *dn;
+ e.e_nname = *ndn;
+ e.e_attrs = NULL;
+ e.e_ocflags = 0;
+ e.e_bv.bv_len = 0;
+ e.e_bv.bv_val = NULL;
+ e.e_private = NULL;
+
+ if ( ! access_allowed( be, conn, op, &e,
+ entry, NULL, ACL_READ, NULL ) )
+ {
+ send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+ NULL, NULL, NULL, NULL );
+ return -1;
+ }
+
if ( (op->o_private = (void *) forkandexec( si->si_compare, &rfp, &wfp ))
== (void *) -1 ) {
send_ldap_result( conn, op, LDAP_OTHER, NULL,
{
Modification *mod;
struct shellinfo *si = (struct shellinfo *) be->be_private;
+ AttributeDescription *entry = slap_schema.si_ad_entry;
+ Entry e;
FILE *rfp, *wfp;
int i;
return( -1 );
}
+ e.e_id = NOID;
+ e.e_name = *dn;
+ e.e_nname = *ndn;
+ e.e_attrs = NULL;
+ e.e_ocflags = 0;
+ e.e_bv.bv_len = 0;
+ e.e_bv.bv_val = NULL;
+ e.e_private = NULL;
+
+ if ( ! access_allowed( be, conn, op, &e,
+ entry, NULL, ACL_WRITE, NULL ) )
+ {
+ send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+ NULL, NULL, NULL, NULL );
+ return -1;
+ }
+
if ( (op->o_private = (void *) forkandexec( si->si_modify, &rfp, &wfp ))
== (void *) -1 ) {
send_ldap_result( conn, op, LDAP_OTHER, NULL,