From bbc10f69ab97eb7950517de903b442159a8179f9 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 21 Oct 2011 09:04:35 +0200 Subject: [PATCH 1/2] Use LDAPDerefSpec properly ldap_create_deref_control_value expects an array of LDAPDerefSpec structures with LDAPDerefSpec.derefAttr == NULL as a sentinel. We were passing a single instance of a LDAPDerefSpec structure. https://fedorahosted.org/sssd/ticket/1050 --- src/providers/ldap/sdap_async.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index 5d7019988fc3ec373179c6956abfa0e32b56a620..33664f146ec97e7b245bc8289c32634a5b9ce578 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1371,12 +1371,14 @@ static int sdap_x_deref_create_control(struct sdap_handle *sh, { struct berval derefval; int ret; - static LDAPDerefSpec ds; + struct LDAPDerefSpec ds[2]; - ds.derefAttr = discard_const(deref_attr); - ds.attributes = discard_const(attrs); + ds[0].derefAttr = discard_const(deref_attr); + ds[0].attributes = discard_const(attrs); - ret = ldap_create_deref_control_value(sh->ldap, &ds, &derefval); + ds[1].derefAttr = NULL; /* sentinel */ + + ret = ldap_create_deref_control_value(sh->ldap, ds, &derefval); if (ret != LDAP_SUCCESS) { DEBUG(1, ("sss_ldap_control_create failed: %s\n", ldap_err2string(ret))); -- 1.7.6.4