File 0021-ITS-8435-Fix-uninited-slap_callback.sc_writewait.patch of Package openldap2.24984
From 4de3e7f3b6453487bb63247258805679e48dac03 Mon Sep 17 00:00:00 2001
From: Hallvard Furuseth <hallvard@openldap.org>
Date: Sun, 12 Jun 2016 08:30:58 +0200
Subject: [PATCH] ITS#8435 Fix uninited slap_callback.sc_writewait
diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c
index 9355ba4..2e3280a 100644
--- a/servers/slapd/backover.c
+++ b/servers/slapd/backover.c
@@ -1219,6 +1219,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 33323e3..5c65b42 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 5625331..ab0a40e 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 968fbb0..f6cd6bc 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 f0f366c..40ad6e2 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 6032662..de8c2b4 100644
--- a/servers/slapd/overlays/pcache.c
+++ b/servers/slapd/overlays/pcache.c
@@ -2841,7 +2841,7 @@ pcache_op_bind(
QueryTemplate *temp;
Entry *e;
slap_callback cb = { 0 }, *sc;
- bindinfo bi;
+ bindinfo bi = { 0 };
bindcacheinfo *bci;
Operation op2;
int rc;
@@ -2871,7 +2871,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;
@@ -2900,11 +2899,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;
@@ -2940,6 +2936,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;
@@ -3132,6 +3129,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 2f9638c..88c18ca 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 5fc6f84..35377bf 100644
--- a/servers/slapd/overlays/syncprov.c
+++ b/servers/slapd/overlays/syncprov.c
@@ -2498,7 +2498,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 0efcd92..b971b68 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 2a48325..c8ed0d7 100644
--- a/servers/slapd/syncrepl.c
+++ b/servers/slapd/syncrepl.c
@@ -2170,6 +2170,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.15.0