(tgs_rep2): alloc and free csec and cusec properly
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9996 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1355,6 +1355,9 @@ tgs_rep2(KDC_REQ_BODY *b,
|
|||||||
krb5_principal sp = NULL;
|
krb5_principal sp = NULL;
|
||||||
AuthorizationData *auth_data = NULL;
|
AuthorizationData *auth_data = NULL;
|
||||||
|
|
||||||
|
*csec = NULL;
|
||||||
|
*cusec = NULL;
|
||||||
|
|
||||||
memset(&ap_req, 0, sizeof(ap_req));
|
memset(&ap_req, 0, sizeof(ap_req));
|
||||||
ret = krb5_decode_ap_req(context, &tgs_req->padata_value, &ap_req);
|
ret = krb5_decode_ap_req(context, &tgs_req->padata_value, &ap_req);
|
||||||
if(ret){
|
if(ret){
|
||||||
@@ -1437,8 +1440,20 @@ tgs_rep2(KDC_REQ_BODY *b,
|
|||||||
|
|
||||||
ret = krb5_auth_getauthenticator(context, ac, &auth);
|
ret = krb5_auth_getauthenticator(context, ac, &auth);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
*csec = &auth->ctime;
|
*csec = malloc(sizeof(**csec));
|
||||||
*cusec = &auth->cusec;
|
if (*csec == NULL) {
|
||||||
|
krb5_free_authenticator(context, &auth);
|
||||||
|
kdc_log(0, "malloc failed");
|
||||||
|
goto out2;
|
||||||
|
}
|
||||||
|
**csec = auth->ctime;
|
||||||
|
*cusec = malloc(sizeof(**cusec));
|
||||||
|
if (*cusec == NULL) {
|
||||||
|
krb5_free_authenticator(context, &auth);
|
||||||
|
kdc_log(0, "malloc failed");
|
||||||
|
goto out2;
|
||||||
|
}
|
||||||
|
**csec = auth->cusec;
|
||||||
krb5_free_authenticator(context, &auth);
|
krb5_free_authenticator(context, &auth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1676,7 +1691,7 @@ tgs_rep2(KDC_REQ_BODY *b,
|
|||||||
free_ent(client);
|
free_ent(client);
|
||||||
}
|
}
|
||||||
out2:
|
out2:
|
||||||
if(ret)
|
if(ret) {
|
||||||
krb5_mk_error(context,
|
krb5_mk_error(context,
|
||||||
ret,
|
ret,
|
||||||
e_text,
|
e_text,
|
||||||
@@ -1686,6 +1701,11 @@ out2:
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
reply);
|
reply);
|
||||||
|
free(*csec);
|
||||||
|
free(*cusec);
|
||||||
|
*csec = NULL;
|
||||||
|
*cusec = NULL;
|
||||||
|
}
|
||||||
krb5_free_principal(context, cp);
|
krb5_free_principal(context, cp);
|
||||||
krb5_free_principal(context, sp);
|
krb5_free_principal(context, sp);
|
||||||
if (ticket) {
|
if (ticket) {
|
||||||
@@ -1700,6 +1720,7 @@ out2:
|
|||||||
|
|
||||||
if(krbtgt)
|
if(krbtgt)
|
||||||
free_ent(krbtgt);
|
free_ent(krbtgt);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user