summaryrefslogtreecommitdiffstats
path: root/ipa-client
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2014-11-05 08:59:08 +0000
committerMartin Kosek <mkosek@redhat.com>2014-11-05 15:28:27 +0100
commitade02cdac48dd46b25a647898aff20790483717e (patch)
treea8cbe2c8667ccb58fda9e018f3f55f1c7eb3edaa /ipa-client
parent4e49f39e1a9c267c52b409a083a202c27171ae4d (diff)
downloadfreeipa-ade02cdac48dd46b25a647898aff20790483717e.tar.gz
freeipa-ade02cdac48dd46b25a647898aff20790483717e.tar.xz
freeipa-ade02cdac48dd46b25a647898aff20790483717e.zip
Fix memory leaks in ipa-join
Also remove dead code in ipa-join and add initializer to a variable in ipa-getkeytab to prevent false positives in static code analysis. https://fedorahosted.org/freeipa/ticket/4651 Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
Diffstat (limited to 'ipa-client')
-rw-r--r--ipa-client/ipa-getkeytab.c2
-rw-r--r--ipa-client/ipa-join.c18
2 files changed, 9 insertions, 11 deletions
diff --git a/ipa-client/ipa-getkeytab.c b/ipa-client/ipa-getkeytab.c
index 7861e4e50..bb43c333d 100644
--- a/ipa-client/ipa-getkeytab.c
+++ b/ipa-client/ipa-getkeytab.c
@@ -794,7 +794,7 @@ int main(int argc, const char *argv[])
char *password = NULL;
krb5_context krbctx;
krb5_ccache ccache;
- krb5_principal uprinc;
+ krb5_principal uprinc = NULL;
krb5_principal sprinc;
krb5_error_code krberr;
struct keys_container keys = { 0 };
diff --git a/ipa-client/ipa-join.c b/ipa-client/ipa-join.c
index df33d3b08..46f64572d 100644
--- a/ipa-client/ipa-join.c
+++ b/ipa-client/ipa-join.c
@@ -463,14 +463,12 @@ static int
join_ldap(const char *ipaserver, char *hostname, char ** binddn, const char *bindpw, const char *basedn, const char **princ, const char **subject, int quiet)
{
LDAP *ld;
- char *filter = NULL;
int rval = 0;
char *oidresult = NULL;
struct berval valrequest;
struct berval *valresult = NULL;
int rc, ret;
char *ldap_base = NULL;
- char *search_base = NULL;
*binddn = NULL;
*princ = NULL;
@@ -542,16 +540,12 @@ join_ldap(const char *ipaserver, char *hostname, char ** binddn, const char *bin
*princ = strdup(valresult->bv_val);
ldap_done:
-
- free(filter);
- free(search_base);
- free(ldap_base);
-
if (ld != NULL) {
ldap_unbind_ext(ld, NULL, NULL);
}
done:
+ free(ldap_base);
if (valresult) ber_bvfree(valresult);
if (oidresult) free(oidresult);
return rval;
@@ -815,7 +809,8 @@ unenroll_host(const char *server, const char *hostname, const char *ktname, int
if (!quiet)
fprintf(stderr, _("Error parsing \"%1$s\": %2$s.\n"),
principal, error_message(krberr));
- return krberr;
+ rval = 4;
+ goto cleanup;
}
strcpy(tgs, KRB5_TGS_NAME);
snprintf(tgs + strlen(tgs), sizeof(tgs) - strlen(tgs), "/%.*s",
@@ -833,7 +828,8 @@ unenroll_host(const char *server, const char *hostname, const char *ktname, int
if (!quiet)
fprintf(stderr, _("Error obtaining initial credentials: %s.\n"),
error_message(krberr));
- return krberr;
+ rval = 19;
+ goto cleanup;
}
krberr = krb5_cc_resolve(krbctx, "MEMORY:ipa-join", &ccache);
@@ -852,7 +848,8 @@ unenroll_host(const char *server, const char *hostname, const char *ktname, int
fprintf(stderr,
_("Error storing creds in credential cache: %s.\n"),
error_message(krberr));
- return krberr;
+ rval = 19;
+ goto cleanup;
}
krb5_cc_close(krbctx, ccache);
ccache = NULL;
@@ -914,6 +911,7 @@ cleanup:
free(user_agent);
if (keytab) krb5_kt_close(krbctx, keytab);
+ free(host);
free((char *)principal);
free((char *)ipaserver);
if (princ) krb5_free_principal(krbctx, princ);