diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2011-10-21 09:04:35 +0200 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2011-11-02 08:45:33 -0400 |
commit | db593e2714ad025573bb5089ad196d1d389655a1 (patch) | |
tree | 626b09e5a377c1b9008a9f76e2e28a7b8c9e9108 | |
parent | 8693a65bd0fd7ac5d7475d88bcce9600ccdbe012 (diff) | |
download | sssd_unused-db593e2714ad025573bb5089ad196d1d389655a1.tar.gz sssd_unused-db593e2714ad025573bb5089ad196d1d389655a1.tar.xz sssd_unused-db593e2714ad025573bb5089ad196d1d389655a1.zip |
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
-rw-r--r-- | 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 37fa070a..6376887d 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))); |