Author: abartlet Date: 2005-09-07 22:04:11 +0000 (Wed, 07 Sep 2005) New Revision: 455
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=lorikeet&rev=455 Log: Don't modify the returned keyblock unless we succeed. Andrew Bartlett Modified: trunk/heimdal/lib/krb5/rd_req.c Changeset: Modified: trunk/heimdal/lib/krb5/rd_req.c =================================================================== --- trunk/heimdal/lib/krb5/rd_req.c 2005-09-05 10:50:15 UTC (rev 454) +++ trunk/heimdal/lib/krb5/rd_req.c 2005-09-07 22:04:11 UTC (rev 455) @@ -565,6 +565,7 @@ krb5_error_code ret; krb5_ap_req ap_req; krb5_principal service = NULL; + krb5_keyblock *local_keyblock; if (*auth_context == NULL) { ret = krb5_auth_con_init(context, auth_context); @@ -596,13 +597,13 @@ &ap_req, server, keytab, - keyblock); + &local_keyblock); if(ret) goto out; } else { ret = krb5_copy_keyblock(context, (*auth_context)->keyblock, - keyblock); + &local_keyblock); if (ret) goto out; } @@ -611,17 +612,20 @@ auth_context, &ap_req, server, - *keyblock, + local_keyblock, 0, ap_req_options, ticket); + if (ret) { + krb5_free_keyblock(context, local_keyblock); + } else { + *keyblock = local_keyblock; + } out: free_AP_REQ(&ap_req); if(service) krb5_free_principal(context, service); - if (ret) - krb5_free_keyblock(context, *keyblock); return ret; }
