free more and do etype correctly

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2568 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-07-23 23:53:39 +00:00
parent b8fe622069
commit 012dd50832

View File

@@ -257,6 +257,7 @@ krb5_get_in_tkt(krb5_context context,
KDCOptions f; KDCOptions f;
} opts; } opts;
PA_DATA *pa; PA_DATA *pa;
unsigned etype;
opts.i = options; opts.i = options;
memset(&a, 0, sizeof(a)); memset(&a, 0, sizeof(a));
@@ -286,6 +287,8 @@ krb5_get_in_tkt(krb5_context context,
&a.req_body.etype.val, &a.req_body.etype.val,
etypes); etypes);
etype = a.req_body.etype.val[0]; /* XXX */
a.req_body.addresses = malloc(sizeof(*a.req_body.addresses)); a.req_body.addresses = malloc(sizeof(*a.req_body.addresses));
if (addrs) if (addrs)
@@ -314,20 +317,24 @@ krb5_get_in_tkt(krb5_context context,
if (ret) if (ret)
return ret; return ret;
ret = (*key_proc)(context, *(a.req_body.etype.val), &salt, ret = (*key_proc)(context, etype, &salt,
keyseed, &key); keyseed, &key);
krb5_data_free (&salt); krb5_data_free (&salt);
if (ret) if (ret)
return ret; return ret;
make_pa_enc_timestamp(context, &a.padata->val[0], key); make_pa_enc_timestamp(context, &a.padata->val[0], key);
krb5_free_keyblock (context, key);
free (key);
/* make a v4 salted pa-data */ /* make a v4 salted pa-data */
salt.length = 0; salt.length = 0;
salt.data = NULL; salt.data = NULL;
ret = (*key_proc)(context, *(a.req_body.etype.val), &salt, ret = (*key_proc)(context, etype, &salt,
keyseed, &key); keyseed, &key);
if (ret) if (ret)
return ret; return ret;
make_pa_enc_timestamp(context, &a.padata->val[1], key); make_pa_enc_timestamp(context, &a.padata->val[1], key);
krb5_free_keyblock (context, key);
free (key);
} else } else
return KRB5_PREAUTH_BAD_TYPE; return KRB5_PREAUTH_BAD_TYPE;
@@ -358,6 +365,7 @@ krb5_get_in_tkt(krb5_context context,
if (error.e_text) if (error.e_text)
fprintf (stderr, fprintf (stderr,
"get_in_tkt: KRB_ERROR: %s\n", *(error.e_text)); "get_in_tkt: KRB_ERROR: %s\n", *(error.e_text));
free_KRB_ERROR (&error);
return error.error_code; return error.error_code;
} }
return ret; return ret;
@@ -371,7 +379,7 @@ krb5_get_in_tkt(krb5_context context,
pa_pw_salt, &index); pa_pw_salt, &index);
} }
if(pa) if(pa)
ret = (*key_proc)(context, *(a.req_body.etype.val), ret = (*key_proc)(context, etype,
&pa->padata_value, keyseed, &key); &pa->padata_value, keyseed, &key);
else{ else{
/* make a v5 salted pa-data */ /* make a v5 salted pa-data */
@@ -381,7 +389,7 @@ krb5_get_in_tkt(krb5_context context,
if (ret) if (ret)
return ret; return ret;
ret = (*key_proc)(context, *(a.req_body.etype.val), &salt, ret = (*key_proc)(context, etype, &salt,
keyseed, &key); keyseed, &key);
krb5_data_free (&salt); krb5_data_free (&salt);
if (ret) if (ret)
@@ -391,8 +399,12 @@ krb5_get_in_tkt(krb5_context context,
ret = extract_ticket(context, &rep, creds, key, keyseed, ret = extract_ticket(context, &rep, creds, key, keyseed,
NULL, decrypt_proc, decryptarg); NULL, decrypt_proc, decryptarg);
memset (key->keyvalue.data, 0, key->keyvalue.length); memset (key->keyvalue.data, 0, key->keyvalue.length);
krb5_free_keyblock (context, key);
free (key);
#if 0
krb5_data_free (&key->keyvalue); krb5_data_free (&key->keyvalue);
free (key); free (key);
#endif
free_KDC_REP(&rep.part1); free_KDC_REP(&rep.part1);
free_EncTGSRepPart(&rep.part2); free_EncTGSRepPart(&rep.part2);