summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2008-11-14 09:55:28 -0500
committerSimo Sorce <ssorce@redhat.com>2008-11-14 10:23:43 -0500
commit7156f2ddfb1f68e3706943ab4aaa7516b0cf0a6e (patch)
tree19d61ff58e543ac3d0c887efee22d1349de87f91
parente3929e60d57e2131d12b7634857d727c274f5fb3 (diff)
downloadfreeipa-7156f2ddfb1f68e3706943ab4aaa7516b0cf0a6e.tar.gz
freeipa-7156f2ddfb1f68e3706943ab4aaa7516b0cf0a6e.tar.xz
freeipa-7156f2ddfb1f68e3706943ab4aaa7516b0cf0a6e.zip
Fix a free before use bug, it may lead to crashes but usually just corrupts
the changepw dn we store so that it won't match. This causes normal password changes to be interpreted as password resets instead, and the new legit password is immediately expired.
-rw-r--r--ipa-server/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c b/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c
index 90474809e..ca367c816 100644
--- a/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c
+++ b/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c
@@ -3821,7 +3821,7 @@ static int ipapwd_start( Slapi_PBlock *pb )
{
krb5_context krbctx;
krb5_error_code krberr;
- char *realm;
+ char *realm = NULL;
char *config_dn;
char *partition_dn;
Slapi_Entry *config_entry = NULL;
@@ -3861,11 +3861,9 @@ static int ipapwd_start( Slapi_PBlock *pb )
ipa_realm_dn = slapi_ch_smprintf("cn=%s,cn=kerberos,%s", realm, partition_dn);
if (!ipa_realm_dn) {
slapi_log_error( SLAPI_LOG_FATAL, "ipapwd_start", "Out of memory ?\n");
- free(realm);
ret = LDAP_OPERATIONS_ERROR;
goto done;
}
- free(realm);
ipa_pwd_config_dn = slapi_ch_strdup(config_dn);
if (!ipa_pwd_config_dn) {
@@ -3885,6 +3883,7 @@ static int ipapwd_start( Slapi_PBlock *pb )
ret = LDAP_SUCCESS;
done:
+ free(realm);
krb5_free_context(krbctx);
if (config_entry) slapi_entry_free(config_entry);
return ret;