summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2008-05-28 16:24:03 -0400
committerSimo Sorce <ssorce@redhat.com>2008-05-29 09:50:22 -0400
commite2f44c9908c734cd6de6c3e479bf5cb2b894da5c (patch)
treeb688c80675beafb53527b0932d2474c53cc310c7
parenta656329173e62784fd43c6139d92f6b44021d1b1 (diff)
downloadfreeipa-e2f44c9908c734cd6de6c3e479bf5cb2b894da5c.tar.gz
freeipa-e2f44c9908c734cd6de6c3e479bf5cb2b894da5c.tar.xz
freeipa-e2f44c9908c734cd6de6c3e479bf5cb2b894da5c.zip
Fix crash bug in ipa_kpasswd
-rw-r--r--ipa-server/ipa-kpasswd/ipa_kpasswd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ipa-server/ipa-kpasswd/ipa_kpasswd.c b/ipa-server/ipa-kpasswd/ipa_kpasswd.c
index f454383d..8e83c515 100644
--- a/ipa-server/ipa-kpasswd/ipa_kpasswd.c
+++ b/ipa-server/ipa-kpasswd/ipa_kpasswd.c
@@ -307,7 +307,7 @@ int ldap_pwd_change(char *client_name, char *realm_name, krb5_data pwd, char **e
LDAP *ld = NULL;
BerElement *ctrl = NULL;
BerElement *sctrl = NULL;
- struct berval control;
+ struct berval *control = NULL;
struct berval newpw;
char hostname[1024];
char *ldap_uri = NULL;
@@ -473,7 +473,7 @@ int ldap_pwd_change(char *client_name, char *realm_name, krb5_data pwd, char **e
LDAP_TAG_EXOP_MODIFY_PASSWD_ID, userdn,
LDAP_TAG_EXOP_MODIFY_PASSWD_NEW, &newpw);
- ret = ber_flatten2(ctrl, &control, 0);
+ ret = ber_flatten(ctrl, &control);
if (ret < 0) {
syslog(LOG_ERR, "ber flattening failed!");
goto done;
@@ -482,7 +482,7 @@ int ldap_pwd_change(char *client_name, char *realm_name, krb5_data pwd, char **e
/* perform password change */
ret = ldap_extended_operation(ld,
LDAP_EXOP_MODIFY_PASSWD,
- &control, NULL, NULL,
+ control, NULL, NULL,
&msgid);
if (ret != LDAP_SUCCESS) {
syslog(LOG_ERR, "ldap_extended_operation() failed. (%d)", ret);
@@ -632,6 +632,7 @@ done:
if (sctrl) ber_free(sctrl, 1);
if (srvctrl) ldap_controls_free(srvctrl);
if (res) ldap_msgfree(res);
+ if (control) ber_bvfree(control);
if (exterr1) free(exterr1);
if (exterr2) free(exterr2);
if (userdn) free(userdn);