summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2006-04-25 12:53:38 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:16:30 -0500
commit6f5effa730dde49ec30e03e3bc403990affe9f03 (patch)
tree4785318731d7e10ed7297157c2e6ac677f4e36e9
parent351e749246a278b60a7e18c1eeafdc8ec70efea2 (diff)
downloadsamba-6f5effa730dde49ec30e03e3bc403990affe9f03.tar.gz
samba-6f5effa730dde49ec30e03e3bc403990affe9f03.tar.bz2
samba-6f5effa730dde49ec30e03e3bc403990affe9f03.zip
r15243: Sorry for the breakage:
* Fix the build without kerberos headers * Fix memleak in the krb5_address handling Guenther (This used to be commit 10e42117559d4bc6a34e41a94914bf6c65c3477f)
-rw-r--r--source3/include/ads.h6
-rw-r--r--source3/libsmb/clikrb5.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/source3/include/ads.h b/source3/include/ads.h
index 711dd2aa70..f29c94bb90 100644
--- a/source3/include/ads.h
+++ b/source3/include/ads.h
@@ -271,10 +271,14 @@ typedef void **ADS_MODLIST;
#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
diff --git a/source3/libsmb/clikrb5.c b/source3/libsmb/clikrb5.c
index 40ffec6f53..e0d6b09d97 100644
--- a/source3/libsmb/clikrb5.c
+++ b/source3/libsmb/clikrb5.c
@@ -1208,6 +1208,9 @@ done:
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 @@ done:
addrs = (krb5_address **)SMB_MALLOC(sizeof(krb5_address *) * num_addr);
if (addrs == NULL) {
+ SAFE_FREE(kerb_addr);
return ENOMEM;
}
@@ -1250,6 +1254,7 @@ done:
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 @@ done:
if (addrs[0]->contents == NULL) {
SAFE_FREE(addrs[0]);
SAFE_FREE(addrs);
+ SAFE_FREE(kerb_addr);
return ENOMEM;
}
@@ -1271,6 +1277,7 @@ done:
{
addrs = (krb5_addresses *)SMB_MALLOC(sizeof(krb5_addresses));
if (addrs == NULL) {
+ SAFE_FREE(kerb_addr);
return ENOMEM;
}
@@ -1280,6 +1287,7 @@ done:
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 @@ done:
if (addrs->val[0].address.data == NULL) {
SAFE_FREE(addrs->val);
SAFE_FREE(addrs);
+ SAFE_FREE(kerb_addr);
return ENOMEM;
}