kdc: Fix leaks

This commit is contained in:
Nicolas Williams
2019-12-09 21:39:30 -06:00
parent d1a2652090
commit 733140553a
6 changed files with 11 additions and 5 deletions

View File

@@ -1825,6 +1825,7 @@ again:
} }
MHD_stop_daemon(current); MHD_stop_daemon(current);
_krb5_unload_plugins(context, "kdc");
pthread_key_delete(k5ctx); pthread_key_delete(k5ctx);
return 0; return 0;
} }

View File

@@ -174,6 +174,7 @@ main(int argc, char **argv)
switch_environment(); switch_environment();
start_kdc(context, config, argv[0]); start_kdc(context, config, argv[0]);
_krb5_unload_plugins(context, "kdc");
krb5_free_context(context); krb5_free_context(context);
free(config); free(config);
return 0; return 0;

View File

@@ -98,6 +98,7 @@ _kdc_audit_addkv(kdc_request_t r, int flags, const char *k,
} }
heim_array_append_value(r->kv, str); heim_array_append_value(r->kv, str);
heim_release(str);
} }
void void
@@ -360,7 +361,6 @@ process_request(krb5_context context,
krb5_error_code ret; krb5_error_code ret;
unsigned int i; unsigned int i;
int claim = 0; int claim = 0;
heim_auto_release_t pool = heim_auto_release_create();
r = calloc(sizeof(*r), 1); r = calloc(sizeof(*r), 1);
if (!r) if (!r)
@@ -396,16 +396,16 @@ process_request(krb5_context context,
free(r->cname); free(r->cname);
free(r->sname); free(r->sname);
free(r->e_text_buf); free(r->e_text_buf);
heim_release(r->kv);
} }
heim_release(pool); heim_release(r->kv);
free(r);
return ret; return ret;
} }
} }
heim_release(pool); heim_release(r->kv);
free(r);
return -1; return -1;
} }

View File

@@ -72,6 +72,7 @@ main(int argc, char **argv)
krb5_err(context, 1, ret, "Authorization failed"); krb5_err(context, 1, ret, "Authorization failed");
printf("Authorized!\n"); printf("Authorized!\n");
krb5_free_principal(context, princ); krb5_free_principal(context, princ);
_krb5_unload_plugins(context, "kdc");
krb5_free_context(context); krb5_free_context(context);
hx509_request_free(&csr); hx509_request_free(&csr);
/* FIXME There's no free function for config yet */ /* FIXME There's no free function for config yet */

View File

@@ -136,6 +136,7 @@ main(int argc, char **argv)
if (ret != HX509_UNSUPPORTED_OPERATION) if (ret != HX509_UNSUPPORTED_OPERATION)
krb5_err(context, 1, ret, krb5_err(context, 1, ret,
"Could not store certificate and chain in %s", out); "Could not store certificate and chain in %s", out);
_krb5_unload_plugins(context, "kdc");
krb5_free_principal(context, p); krb5_free_principal(context, p);
krb5_free_context(context); krb5_free_context(context);
hx509_request_free(&req); hx509_request_free(&req);

View File

@@ -81,6 +81,8 @@ main(int argc, char **argv)
printf("Token is valid. Actual principal: %s\n", s); printf("Token is valid. Actual principal: %s\n", s);
else else
printf("Token is valid."); printf("Token is valid.");
_krb5_unload_plugins(context, "kdc");
krb5_free_principal(context, actual_princ); krb5_free_principal(context, actual_princ);
krb5_free_context(context);
return 0; return 0;
} }