r23588: Some more cleanups and error checks in the krb5 renew function.
authorGünther Deschner <gd@samba.org>
Fri, 22 Jun 2007 14:54:39 +0000 (14:54 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:23:33 +0000 (12:23 -0500)
Guenther

source/libsmb/clikrb5.c

index be6fb1bda8ffe6d15c0c8901e8b7774550f784a5..f452766e32591201eaa9eccb579eb46ab26445e0 100644 (file)
@@ -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)