summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/libsmb/clikrb5.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/source3/libsmb/clikrb5.c b/source3/libsmb/clikrb5.c
index be6fb1bda8..f452766e32 100644
--- a/source3/libsmb/clikrb5.c
+++ b/source3/libsmb/clikrb5.c
@@ -1151,6 +1151,11 @@ out:
ccache_string = krb5_cc_default_name(context);
}
+ if (!ccache_string) {
+ ret = EINVAL;
+ goto done;
+ }
+
DEBUG(10,("smb_krb5_renew_ticket: using %s as ccache\n", ccache_string));
/* FIXME: we should not fall back to defaults */
@@ -1175,6 +1180,8 @@ out:
{
krb5_creds creds;
+ ZERO_STRUCT(creds);
+
ret = krb5_get_renewed_creds(context, &creds, client, ccache, CONST_DISCARD(char *, service_string));
if (ret) {
DEBUG(10,("smb_krb5_renew_ticket: krb5_get_kdc_cred failed: %s\n", error_message(ret)));
@@ -1202,7 +1209,7 @@ out:
krb5_realm *client_realm;
krb5_creds *creds;
- memset(&creds_in, 0, sizeof(creds_in));
+ ZERO_STRUCT(creds_in);
ret = krb5_copy_principal(context, client, &creds_in.client);
if (ret) {
@@ -1252,7 +1259,7 @@ out:
krb5_free_creds(context, creds);
}
#else
-#error NO_SUITABKE_KRB5_TICKET_RENEW_FUNCTION_AVAILABLE
+#error NO_SUITABLE_KRB5_TICKET_RENEW_FUNCTION_AVAILABLE
#endif
@@ -1260,15 +1267,14 @@ done:
if (client) {
krb5_free_principal(context, client);
}
- if (context) {
- krb5_free_context(context);
- }
if (ccache) {
krb5_cc_close(context, ccache);
}
+ if (context) {
+ krb5_free_context(context);
+ }
return ret;
-
}
krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr)