[342] in Kerberos-V5-bugs
minor memory leak in kdcr2kkdcr.c
daemon@ATHENA.MIT.EDU (Jim Miller)
Fri Sep 17 18:14:55 1993
From: jim@bilbo.suite.com (Jim Miller)
Date: Fri, 17 Sep 93 17:02:42 -0500
To: krb5-bugs@MIT.EDU
Cc: kerberos@MIT.EDU
Reply-To: Jim_Miller@suite.com
The following code is from Krb5, version pre-beta3, but the problem may also
exist in Krb5, beta2.
There is a minor memory leak problem in the routine KRB5_KDC__REP2krb5_kdc_rep,
in the file asn.1/kdcr2kkdcr.c. Fortunately it only happens when things are
about to die anyways.
Here's the code:
krb5_kdc_rep *
KRB5_KDC__REP2krb5_kdc_rep(val, error)
const register struct type_KRB5_TGS__REP *val;
register int *error;
{
register krb5_kdc_rep *retval;
krb5_enc_data *temp;
retval = (krb5_kdc_rep *)xmalloc(sizeof(*retval));
if (!retval) {
*error = ENOMEM;
return(0);
}
xbzero(retval, sizeof(*retval));
retval->msg_type = val->msg__type;
if (val->padata) {
retval->padata = element_KRB5_112krb5_pa_data(val->padata, error);
if (*error) {
xfree(retval);
return 0;
}
}
retval->client = KRB5_PrincipalName2krb5_principal(val->cname,
val->crealm,
error);
if (!retval->client) {
xfree(retval); <- *** the padata, if any, is not freed.
return(0);
}
Suggested fix:
if (!retval->client) {
! krb5_free_kdc_rep(retval); <- *** not a big deal
return(0);
}
Jim_Miller@suite.com