free more

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2569 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-07-23 23:54:37 +00:00
parent 012dd50832
commit d7928440a3
7 changed files with 53 additions and 24 deletions

View File

@@ -66,6 +66,7 @@ krb5_build_authenticator (krb5_context context,
auth->subkey = NULL; auth->subkey = NULL;
#else #else
krb5_generate_subkey (context, &cred->session, &auth->subkey); krb5_generate_subkey (context, &cred->session, &auth->subkey);
free_EncryptionKey (&auth_context->local_subkey);
copy_EncryptionKey (auth->subkey, copy_EncryptionKey (auth->subkey,
&auth_context->local_subkey); &auth_context->local_subkey);
#endif #endif
@@ -98,7 +99,7 @@ krb5_build_authenticator (krb5_context context,
if (auth_result) if (auth_result)
*auth_result = auth; *auth_result = auth;
else { else {
free (auth->crealm); free_Authenticator (auth);
free (auth); free (auth);
} }
return ret; return ret;

View File

@@ -170,6 +170,8 @@ krb5_error_code
krb5_kt_free_entry(krb5_context context, krb5_kt_free_entry(krb5_context context,
krb5_keytab_entry *entry) krb5_keytab_entry *entry)
{ {
krb5_free_principal (context, entry->principal);
krb5_free_keyblock (context, &entry->keyblock);
free (entry); free (entry);
return 0; return 0;
} }

View File

@@ -86,6 +86,7 @@ krb5_mk_priv(krb5_context context,
return r; return r;
r = encode_KRB_PRIV (buf + sizeof(buf) - 1, sizeof(buf), &s, &len); r = encode_KRB_PRIV (buf + sizeof(buf) - 1, sizeof(buf), &s, &len);
krb5_data_free (&s.enc_part.cipher);
if (r) if (r)
return r; return r;
outbuf->length = len; outbuf->length = len;

View File

@@ -49,7 +49,6 @@ krb5_mk_req_extended(krb5_context context,
krb5_data *outbuf) krb5_data *outbuf)
{ {
krb5_error_code r; krb5_error_code r;
Authenticator *auth;
krb5_data authenticator; krb5_data authenticator;
Checksum c; Checksum c;
Checksum *c_opt; Checksum *c_opt;
@@ -66,8 +65,9 @@ krb5_mk_req_extended(krb5_context context,
if(r) if(r)
return r; return r;
copy_EncryptionKey(&in_creds->session, free_EncryptionKey (&ac->key);
&ac->key); copy_EncryptionKey (&in_creds->session,
&ac->key);
if (in_data) { if (in_data) {
@@ -86,7 +86,7 @@ krb5_mk_req_extended(krb5_context context,
ac, ac,
in_creds, in_creds,
c_opt, c_opt,
&auth, NULL,
&authenticator); &authenticator);
if (r) if (r)
return r; return r;

View File

@@ -75,6 +75,7 @@ krb5_rd_priv(krb5_context context,
goto failure; goto failure;
r = decode_EncKrbPrivPart (plain.data, plain.length, &part, &len); r = decode_EncKrbPrivPart (plain.data, plain.length, &part, &len);
krb5_data_free (&plain);
if (r) if (r)
goto failure; goto failure;

View File

@@ -53,13 +53,20 @@ krb5_rd_rep(krb5_context context,
char *buf; char *buf;
krb5_data data; krb5_data data;
krb5_data_zero (&data);
ret = 0;
ret = decode_AP_REP(inbuf->data, inbuf->length, &ap_rep, &len); ret = decode_AP_REP(inbuf->data, inbuf->length, &ap_rep, &len);
if (ret) if (ret)
return ret; return ret;
if (ap_rep.pvno != 5) if (ap_rep.pvno != 5) {
return KRB5KRB_AP_ERR_BADVERSION; ret = KRB5KRB_AP_ERR_BADVERSION;
if (ap_rep.msg_type != krb_ap_rep) goto out;
return KRB5KRB_AP_ERR_MSG_TYPE; }
if (ap_rep.msg_type != krb_ap_rep) {
ret = KRB5KRB_AP_ERR_MSG_TYPE;
goto out;
}
ret = krb5_decrypt (context, ret = krb5_decrypt (context,
ap_rep.enc_part.cipher.data, ap_rep.enc_part.cipher.data,
@@ -68,11 +75,13 @@ krb5_rd_rep(krb5_context context,
&auth_context->key, &auth_context->key,
&data); &data);
if (ret) if (ret)
return ret; goto out;
*repl = malloc(sizeof(**repl)); *repl = malloc(sizeof(**repl));
if (*repl == NULL) if (*repl == NULL) {
return ENOMEM; ret = ENOMEM;
goto out;
}
ret = decode_EncAPRepPart(data.data, ret = decode_EncAPRepPart(data.data,
data.length, data.length,
*repl, *repl,
@@ -88,12 +97,16 @@ krb5_rd_rep(krb5_context context,
auth_context->authenticator->ctime, auth_context->authenticator->ctime,
auth_context->authenticator->cusec); auth_context->authenticator->cusec);
#endif /* Something wrong with the coding??? */ #endif /* Something wrong with the coding??? */
return KRB5KRB_AP_ERR_MUT_FAIL; ret = KRB5KRB_AP_ERR_MUT_FAIL;
goto out;
} }
if ((*repl)->seq_number) if ((*repl)->seq_number)
auth_context->remote_seqnumber = *((*repl)->seq_number); auth_context->remote_seqnumber = *((*repl)->seq_number);
return 0; out:
krb5_data_free (&data);
free_AP_REP (&ap_rep);
return ret;
} }
void void

View File

@@ -279,22 +279,33 @@ krb5_rd_req(krb5_context context,
{ {
krb5_keytab_entry entry; krb5_keytab_entry entry;
krb5_error_code ret; krb5_error_code ret;
krb5_keytab real_keytab;
if(keytab == NULL) if(keytab == NULL)
krb5_kt_default(context, &keytab); krb5_kt_default(context, &real_keytab);
else
real_keytab = keytab;
ret = krb5_kt_get_entry(context, ret = krb5_kt_get_entry(context,
keytab, real_keytab,
(krb5_principal)server, (krb5_principal)server,
0, 0,
KEYTYPE_DES, KEYTYPE_DES,
&entry); &entry);
if(ret) if(ret)
return ret; goto out;
return krb5_rd_req_with_keyblock(context, ret = krb5_rd_req_with_keyblock(context,
auth_context, auth_context,
inbuf, inbuf,
server, server,
&entry.keyblock, &entry.keyblock,
ap_req_options, ap_req_options,
ticket); ticket);
krb5_kt_free_entry (context, &entry);
out:
if (keytab == NULL)
krb5_kt_close (context, real_keytab);
return ret;
} }