svn commit: samba r15243 - branches/SAMBA_3_0/source/include branches/SAMBA_3_0/source/libsmb trunk/source/include trunk/source/libsmb

gd at samba.org gd at samba.org
Tue Apr 25 12:53:38 GMT 2006


Author: gd
Date: 2006-04-25 12:53:38 +0000 (Tue, 25 Apr 2006)
New Revision: 15243

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

Log:
Sorry for the breakage:
* Fix the build without kerberos headers
* Fix memleak in the krb5_address handling

Guenther

Modified:
   branches/SAMBA_3_0/source/include/ads.h
   branches/SAMBA_3_0/source/libsmb/clikrb5.c
   trunk/source/include/ads.h
   trunk/source/libsmb/clikrb5.c


Changeset:
Modified: branches/SAMBA_3_0/source/include/ads.h
===================================================================
--- branches/SAMBA_3_0/source/include/ads.h	2006-04-25 12:34:58 UTC (rev 15242)
+++ branches/SAMBA_3_0/source/include/ads.h	2006-04-25 12:53:38 UTC (rev 15243)
@@ -271,10 +271,14 @@
 #define KRB5_ADDR_NETBIOS 0x14
 #endif
 
+#ifdef HAVE_KRB5
 typedef struct {
 #if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
 	krb5_address **addrs;
-#else /* Heimdal has the krb5_addresses type */
+#elif defined(HAVE_KRB5_ADDRESSES) /* Heimdal */
 	krb5_addresses *addrs;
+#else
+#error UNKNOWN_KRB5_ADDRESS_TYPE
 #endif
 } smb_krb5_addresses;
+#endif

Modified: branches/SAMBA_3_0/source/libsmb/clikrb5.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/clikrb5.c	2006-04-25 12:34:58 UTC (rev 15242)
+++ branches/SAMBA_3_0/source/libsmb/clikrb5.c	2006-04-25 12:53:38 UTC (rev 15243)
@@ -1208,6 +1208,9 @@
  krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr)
 {
 	krb5_error_code ret = 0;
+	if (addr == NULL) {
+		return ret;
+	}
 #if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
 	krb5_free_addresses(context, addr->addrs);
 #elif defined(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS) /* Heimdal */
@@ -1242,6 +1245,7 @@
 
 		addrs = (krb5_address **)SMB_MALLOC(sizeof(krb5_address *) * num_addr);
 		if (addrs == NULL) {
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1250,6 +1254,7 @@
 		addrs[0] = (krb5_address *)SMB_MALLOC(sizeof(krb5_address));
 		if (addrs[0] == NULL) {
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1260,6 +1265,7 @@
 		if (addrs[0]->contents == NULL) {
 			SAFE_FREE(addrs[0]);
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1271,6 +1277,7 @@
 	{
 		addrs = (krb5_addresses *)SMB_MALLOC(sizeof(krb5_addresses));
 		if (addrs == NULL) {
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1280,6 +1287,7 @@
 		addrs->val = (krb5_address *)SMB_MALLOC(sizeof(krb5_address));
 		if (addrs->val == NULL) {
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1289,6 +1297,7 @@
 		if (addrs->val[0].address.data == NULL) {
 			SAFE_FREE(addrs->val);
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 

Modified: trunk/source/include/ads.h
===================================================================
--- trunk/source/include/ads.h	2006-04-25 12:34:58 UTC (rev 15242)
+++ trunk/source/include/ads.h	2006-04-25 12:53:38 UTC (rev 15243)
@@ -271,10 +271,14 @@
 #define KRB5_ADDR_NETBIOS 0x14
 #endif
 
+#ifdef HAVE_KRB5
 typedef struct {
 #if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
 	krb5_address **addrs;
-#else /* Heimdal has the krb5_addresses type */
+#elif defined(HAVE_KRB5_ADDRESSES) /* Heimdal */
 	krb5_addresses *addrs;
+#else
+#error UNKNOWN_KRB5_ADDRESS_TYPE
 #endif
 } smb_krb5_addresses;
+#endif

Modified: trunk/source/libsmb/clikrb5.c
===================================================================
--- trunk/source/libsmb/clikrb5.c	2006-04-25 12:34:58 UTC (rev 15242)
+++ trunk/source/libsmb/clikrb5.c	2006-04-25 12:53:38 UTC (rev 15243)
@@ -1208,6 +1208,9 @@
  krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr)
 {
 	krb5_error_code ret = 0;
+	if (addr == NULL) {
+		return ret;
+	}
 #if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
 	krb5_free_addresses(context, addr->addrs);
 #elif defined(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS) /* Heimdal */
@@ -1242,6 +1245,7 @@
 
 		addrs = (krb5_address **)SMB_MALLOC(sizeof(krb5_address *) * num_addr);
 		if (addrs == NULL) {
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1250,6 +1254,7 @@
 		addrs[0] = (krb5_address *)SMB_MALLOC(sizeof(krb5_address));
 		if (addrs[0] == NULL) {
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1260,6 +1265,7 @@
 		if (addrs[0]->contents == NULL) {
 			SAFE_FREE(addrs[0]);
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1271,6 +1277,7 @@
 	{
 		addrs = (krb5_addresses *)SMB_MALLOC(sizeof(krb5_addresses));
 		if (addrs == NULL) {
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1280,6 +1287,7 @@
 		addrs->val = (krb5_address *)SMB_MALLOC(sizeof(krb5_address));
 		if (addrs->val == NULL) {
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 
@@ -1289,6 +1297,7 @@
 		if (addrs->val[0].address.data == NULL) {
 			SAFE_FREE(addrs->val);
 			SAFE_FREE(addrs);
+			SAFE_FREE(kerb_addr);
 			return ENOMEM;
 		}
 



More information about the samba-cvs mailing list