svn commit: lorikeet r455 - in trunk/heimdal/lib/krb5: .

abartlet at samba.org abartlet at samba.org
Wed Sep 7 22:04:11 GMT 2005


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;
 }



More information about the samba-cvs mailing list