forked from pool/openldap2
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
|
diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c
|
||
|
index 54c24682a..06945d811 100644
|
||
|
--- a/servers/slapd/overlays/memberof.c
|
||
|
+++ b/servers/slapd/overlays/memberof.c
|
||
|
@@ -360,10 +360,16 @@ memberof_value_modify(
|
||
|
unsigned long opid = op->o_opid;
|
||
|
SlapReply rs2 = { REP_RESULT };
|
||
|
slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
|
||
|
- Modifications mod[ 2 ] = { { { 0 } } }, *ml;
|
||
|
- struct berval values[ 4 ], nvalues[ 4 ];
|
||
|
+ Modifications *mod, *ml;
|
||
|
+ struct berval *values, *nvalues;
|
||
|
int mcnt = 0;
|
||
|
|
||
|
+ mod = (Modifications*)malloc(2 * sizeof(Modifications));
|
||
|
+ memset(mod, 0, 2 * sizeof(Modifications));
|
||
|
+
|
||
|
+ values = (struct berval*)malloc(4 * sizeof(struct berval));
|
||
|
+ nvalues = (struct berval*)malloc(4 * sizeof(struct berval));
|
||
|
+
|
||
|
op2.o_tag = LDAP_REQ_MODIFY;
|
||
|
|
||
|
op2.o_req_dn = *ndn;
|
||
|
@@ -493,6 +499,11 @@ memberof_value_modify(
|
||
|
/* restore original opid */
|
||
|
op->o_opid = opid;
|
||
|
|
||
|
+
|
||
|
+ slap_mods_free( mod, 0 );
|
||
|
+ free(values);
|
||
|
+ free(nvalues);
|
||
|
+
|
||
|
/* FIXME: if old_group_ndn doesn't exist, both delete __and__
|
||
|
* add will fail; better split in two operations, although
|
||
|
* not optimal in terms of performance. At least it would
|