diff --git a/servers/slapd/slapi/slapi_overlay.c b/servers/slapd/slapi/slapi_overlay.c index 2a341089e5..e066bfb485 100644 --- a/servers/slapd/slapi/slapi_overlay.c +++ b/servers/slapd/slapi/slapi_overlay.c @@ -462,6 +462,7 @@ slapi_over_merge_controls( Operation *op, SlapReply *rs ) ctrls[n_slapi_ctrls + i] = rs->sr_ctrls[i]; } } + ctrls[n_slapi_ctrls + n_rs_ctrls] = NULL; rs->sr_ctrls = ctrls; diff --git a/servers/slapd/slapi/slapi_pblock.c b/servers/slapd/slapi/slapi_pblock.c index 4d1022a07d..cc1b653e76 100644 --- a/servers/slapd/slapi/slapi_pblock.c +++ b/servers/slapd/slapi/slapi_pblock.c @@ -762,7 +762,8 @@ pblock_add_control( Slapi_PBlock *pb, LDAPControl *control ) controls = (LDAPControl **)slapi_ch_realloc( (char *)controls, ( i + 2 ) * sizeof(LDAPControl *)); - controls[i] = slapi_dup_control( control ); + controls[i++] = slapi_dup_control( control ); + controls[i] = NULL; return pblock_set_default( pb, SLAPI_RESCONTROLS, (void *)controls ); } @@ -818,7 +819,7 @@ pblock_set( Slapi_PBlock *pb, int param, void *value ) LDAPControl **ctrls = NULL; pblock_get_default( pb, param, (void **)&ctrls ); - if ( ctrls == NULL ) { + if ( ctrls != NULL ) { /* free old ones first */ ldap_controls_free( ctrls ); }