From 23c5d6bbdd01d91556eab16b43fbc607d44feb7c Mon Sep 17 00:00:00 2001 From: Hallvard Furuseth Date: Sun, 12 Jun 2016 08:30:58 +0200 Subject: [PATCH] ITS#8435 Fix uninited slap_callback.sc_writewait --- contrib/slapd-modules/authzid/authzid.c | 1 + servers/slapd/backover.c | 1 + servers/slapd/overlays/constraint.c | 4 +--- servers/slapd/overlays/dds.c | 2 ++ servers/slapd/overlays/dynlist.c | 4 +--- servers/slapd/overlays/memberof.c | 4 ++++ servers/slapd/overlays/pcache.c | 8 +++----- servers/slapd/overlays/sssvlv.c | 1 + servers/slapd/overlays/syncprov.c | 2 +- servers/slapd/slapi/slapi_overlay.c | 3 +++ servers/slapd/syncrepl.c | 1 + 11 files changed, 19 insertions(+), 12 deletions(-) diff --git a/contrib/slapd-modules/authzid/authzid.c b/contrib/slapd-modules/authzid/authzid.c index 03aab97db7..494b6f331b 100644 --- a/contrib/slapd-modules/authzid/authzid.c +++ b/contrib/slapd-modules/authzid/authzid.c @@ -292,6 +292,7 @@ authzid_op_bind( op->o_callback->sc_response = authzid_response; op->o_callback->sc_cleanup = authzid_cleanup; op->o_callback->sc_private = NULL; + op->o_callback->sc_writewait = NULL; op->o_callback->sc_next = sc; } diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c index c94b67cbc8..2448b9489a 100644 --- a/servers/slapd/backover.c +++ b/servers/slapd/backover.c @@ -1245,6 +1245,7 @@ overlay_remove( BackendDB *be, slap_overinst *on, Operation *op ) rm_cb->sc_cleanup = overlay_remove_cb; rm_cb->sc_response = NULL; rm_cb->sc_private = (void*) rm_ctx; + rm_cb->sc_writewait = NULL; /* Append callback to the end of the list */ if ( !op->o_callback ) { diff --git a/servers/slapd/overlays/constraint.c b/servers/slapd/overlays/constraint.c index 33323e399d..5c65b42dc9 100644 --- a/servers/slapd/overlays/constraint.c +++ b/servers/slapd/overlays/constraint.c @@ -601,7 +601,7 @@ constraint_violation( constraint *c, struct berval *bv, Operation *op ) case CONSTRAINT_URI: { Operation nop = *op; slap_overinst *on = (slap_overinst *) op->o_bd->bd_info; - slap_callback cb; + slap_callback cb = { 0 }; int i; int found = 0; int rc; @@ -609,9 +609,7 @@ constraint_violation( constraint *c, struct berval *bv, Operation *op ) struct berval filterstr; char *ptr; - cb.sc_next = NULL; cb.sc_response = constraint_uri_cb; - cb.sc_cleanup = NULL; cb.sc_private = &found; nop.o_protocol = LDAP_VERSION3; diff --git a/servers/slapd/overlays/dds.c b/servers/slapd/overlays/dds.c index 39aaa8046f..d7d9dd5da4 100644 --- a/servers/slapd/overlays/dds.c +++ b/servers/slapd/overlays/dds.c @@ -442,6 +442,7 @@ dds_op_add( Operation *op, SlapReply *rs ) sc->sc_response = dds_counter_cb; sc->sc_private = di; sc->sc_next = op->o_callback; + sc->sc_writewait = 0; op->o_callback = sc; } @@ -476,6 +477,7 @@ dds_op_delete( Operation *op, SlapReply *rs ) sc->sc_cleanup = dds_freeit_cb; sc->sc_response = dds_counter_cb; sc->sc_private = di; + sc->sc_writewait = 0; sc->sc_next = op->o_callback; op->o_callback = sc; diff --git a/servers/slapd/overlays/dynlist.c b/servers/slapd/overlays/dynlist.c index 25ea9b2884..e568291bde 100644 --- a/servers/slapd/overlays/dynlist.c +++ b/servers/slapd/overlays/dynlist.c @@ -346,7 +346,7 @@ static int dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli ) { Attribute *a, *id = NULL; - slap_callback cb; + slap_callback cb = { 0 }; Operation o = *op; struct berval *url; Entry *e; @@ -404,8 +404,6 @@ dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli ) dlc.dlc_dli = dli; cb.sc_private = &dlc; cb.sc_response = dynlist_sc_update; - cb.sc_cleanup = NULL; - cb.sc_next = NULL; o.o_callback = &cb; o.ors_deref = LDAP_DEREF_NEVER; diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c index f0f366c101..40ad6e274a 100644 --- a/servers/slapd/overlays/memberof.c +++ b/servers/slapd/overlays/memberof.c @@ -737,6 +737,7 @@ memberof_op_add( Operation *op, SlapReply *rs ) sc->sc_private = sc+1; sc->sc_response = memberof_res_add; sc->sc_cleanup = memberof_cleanup; + sc->sc_writewait = 0; mci = sc->sc_private; mci->on = on; mci->member = NULL; @@ -771,6 +772,7 @@ memberof_op_delete( Operation *op, SlapReply *rs ) sc->sc_private = sc+1; sc->sc_response = memberof_res_delete; sc->sc_cleanup = memberof_cleanup; + sc->sc_writewait = 0; mci = sc->sc_private; mci->on = on; mci->member = NULL; @@ -1189,6 +1191,7 @@ done2:; sc->sc_private = sc+1; sc->sc_response = memberof_res_modify; sc->sc_cleanup = memberof_cleanup; + sc->sc_writewait = 0; mci = sc->sc_private; mci->on = on; mci->member = NULL; @@ -1234,6 +1237,7 @@ memberof_op_modrdn( Operation *op, SlapReply *rs ) sc->sc_private = sc+1; sc->sc_response = memberof_res_modrdn; sc->sc_cleanup = memberof_cleanup; + sc->sc_writewait = 0; mci = sc->sc_private; mci->on = on; mci->member = NULL; diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index 9931db9a75..8ff75b898c 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -2838,7 +2838,7 @@ pcache_op_bind( QueryTemplate *temp; Entry *e; slap_callback cb = { 0 }, *sc; - bindinfo bi; + bindinfo bi = { 0 }; bindcacheinfo *bci; Operation op2; int rc; @@ -2868,7 +2868,6 @@ pcache_op_bind( op2 = *op; op2.o_dn = op->o_bd->be_rootdn; op2.o_ndn = op->o_bd->be_rootndn; - bi.bi_flags = 0; op2.o_bd = &cm->db; e = NULL; @@ -2897,11 +2896,8 @@ pcache_op_bind( */ bi.bi_cm = cm; bi.bi_templ = temp; - bi.bi_cq = NULL; - bi.bi_si = NULL; bi.bi_cb.sc_response = pc_bind_search; - bi.bi_cb.sc_cleanup = NULL; bi.bi_cb.sc_private = &bi; cb.sc_private = &bi; cb.sc_response = pc_bind_resp; @@ -2937,6 +2933,7 @@ pcache_op_bind( sc->sc_response = pc_bind_save; sc->sc_cleanup = NULL; sc->sc_private = sc+1; + sc->sc_writewait = NULL; bci = sc->sc_private; sc->sc_next = op->o_callback; op->o_callback = sc; @@ -3129,6 +3126,7 @@ pcache_op_search( cb->sc_response = pcache_response; cb->sc_cleanup = pcache_op_cleanup; cb->sc_private = (cb+1); + cb->sc_writewait = 0; si = cb->sc_private; si->on = on; si->query = query; diff --git a/servers/slapd/overlays/sssvlv.c b/servers/slapd/overlays/sssvlv.c index 7c50239c11..ba070e9100 100644 --- a/servers/slapd/overlays/sssvlv.c +++ b/servers/slapd/overlays/sssvlv.c @@ -923,6 +923,7 @@ static int sssvlv_op_search( cb->sc_response = sssvlv_op_response; cb->sc_next = op->o_callback; cb->sc_private = so; + cb->sc_writewait = NULL; so->so_tree = NULL; so->so_ctrl = sc; diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 6f6d765ba9..150b93467d 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -2499,7 +2499,7 @@ syncprov_op_search( Operation *op, SlapReply *rs ) syncops so = {0}; fbase_cookie fc; opcookie opc; - slap_callback sc; + slap_callback sc = {0}; fc.fss = &so; fc.fbase = 0; diff --git a/servers/slapd/slapi/slapi_overlay.c b/servers/slapd/slapi/slapi_overlay.c index 69aa6f2ded..18cdadfa2d 100644 --- a/servers/slapd/slapi/slapi_overlay.c +++ b/servers/slapd/slapi/slapi_overlay.c @@ -82,6 +82,7 @@ slapi_op_internal_p( Operation *op, SlapReply *rs, slap_callback *cb ) cb->sc_response = slapi_over_response; cb->sc_cleanup = slapi_over_cleanup; cb->sc_private = pb; + cb->sc_writewait = 0; cb->sc_next = op->o_callback; op->o_callback = cb; } @@ -734,6 +735,7 @@ slapi_over_access_allowed( cb.sc_response = NULL; cb.sc_cleanup = NULL; + cb.sc_writewait = NULL; pb = SLAPI_OPERATION_PBLOCK( op ); @@ -798,6 +800,7 @@ slapi_over_acl_group( cb.sc_response = NULL; cb.sc_cleanup = NULL; + cb.sc_writewait = NULL; pb = SLAPI_OPERATION_PBLOCK( op ); diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 95116b48b1..fc322dbcf3 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -2253,6 +2253,7 @@ syncrepl_op_modify( Operation *op, SlapReply *rs ) sc->sc_private = mx; sc->sc_next = op->o_callback; sc->sc_cleanup = NULL; + sc->sc_writewait = NULL; op->o_callback = sc; op->orm_no_opattrs = 1; mx->mx_orig = op->orm_modlist; -- 2.39.5