diff --git a/lib/asn1/krb5.opt b/lib/asn1/krb5.opt index 998d5734c..a8bd85c52 100644 --- a/lib/asn1/krb5.opt +++ b/lib/asn1/krb5.opt @@ -5,5 +5,5 @@ --sequence=ETYPE-INFO --sequence=ETYPE-INFO2 --preserve-binary=KDC-REQ-BODY ---decorate=PrincipalNameAttrs:heim_object_t:pac +--decorate=PrincipalNameAttrs:void *:pac --decorate=Principal:PrincipalNameAttrs:nameattrs? diff --git a/lib/krb5/principal.c b/lib/krb5/principal.c index f604bbba1..525feae9c 100644 --- a/lib/krb5/principal.c +++ b/lib/krb5/principal.c @@ -103,6 +103,8 @@ krb5_free_principal(krb5_context context, krb5_principal p) { if(p){ + if (p->nameattrs && p->nameattrs->pac) + heim_release(p->nameattrs->pac); free_Principal(p); free(p); } @@ -948,6 +950,9 @@ krb5_copy_principal(krb5_context context, free(p); return krb5_enomem(context); } + if (inprinc->nameattrs && inprinc->nameattrs->pac) + p->nameattrs->pac = heim_retain(inprinc->nameattrs->pac); + *outprinc = p; return 0; }