[342] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

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


home help back first fref pref prev next nref lref last post