svn commit: samba r19977 - in branches: SAMBA_3_0/source/libaddns SAMBA_3_0_24/source/libaddns

jerry at samba.org jerry at samba.org
Fri Dec 1 14:18:35 GMT 2006


Author: jerry
Date: 2006-12-01 14:18:35 +0000 (Fri, 01 Dec 2006)
New Revision: 19977

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19977

Log:
* Fix a crash in the secure DNS update code.  Don't free 
  the host_principal memory while it is still being referenced
  by the gss code.


Modified:
   branches/SAMBA_3_0/source/libaddns/dnsgss.c
   branches/SAMBA_3_0_24/source/libaddns/dnsgss.c


Changeset:
Modified: branches/SAMBA_3_0/source/libaddns/dnsgss.c
===================================================================
--- branches/SAMBA_3_0/source/libaddns/dnsgss.c	2006-12-01 09:09:11 UTC (rev 19976)
+++ branches/SAMBA_3_0/source/libaddns/dnsgss.c	2006-12-01 14:18:35 UTC (rev 19977)
@@ -243,10 +243,9 @@
 	major = gss_import_name( &minor, &input_name,
 				 &nt_host_oid_desc, &targ_name );
 
-	krb5_free_principal( krb_ctx, host_principal );
-	krb5_free_context( krb_ctx );
-
 	if (major) {
+		krb5_free_principal( krb_ctx, host_principal );
+		krb5_free_context( krb_ctx );
 		err = ERROR_DNS_GSS_ERROR;
 		goto error;
 	}
@@ -254,6 +253,8 @@
 	err = dns_negotiate_gss_ctx_int(mem_ctx, conn, keyname, targ_name,
 					gss_ctx);
 
+	krb5_free_principal( krb_ctx, host_principal );
+	krb5_free_context( krb_ctx );
 	gss_release_name( &minor, &targ_name );
 
  error:

Modified: branches/SAMBA_3_0_24/source/libaddns/dnsgss.c
===================================================================
--- branches/SAMBA_3_0_24/source/libaddns/dnsgss.c	2006-12-01 09:09:11 UTC (rev 19976)
+++ branches/SAMBA_3_0_24/source/libaddns/dnsgss.c	2006-12-01 14:18:35 UTC (rev 19977)
@@ -243,10 +243,9 @@
 	major = gss_import_name( &minor, &input_name,
 				 &nt_host_oid_desc, &targ_name );
 
-	krb5_free_principal( krb_ctx, host_principal );
-	krb5_free_context( krb_ctx );
-
 	if (major) {
+		krb5_free_principal( krb_ctx, host_principal );
+		krb5_free_context( krb_ctx );
 		err = ERROR_DNS_GSS_ERROR;
 		goto error;
 	}
@@ -254,6 +253,8 @@
 	err = dns_negotiate_gss_ctx_int(mem_ctx, conn, keyname, targ_name,
 					gss_ctx);
 
+	krb5_free_principal( krb_ctx, host_principal );
+	krb5_free_context( krb_ctx );
 	gss_release_name( &minor, &targ_name );
 
  error:



More information about the samba-cvs mailing list