diff options
author | Günther Deschner <gd@samba.org> | 2006-04-25 12:53:38 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:16:30 -0500 |
commit | 6f5effa730dde49ec30e03e3bc403990affe9f03 (patch) | |
tree | 4785318731d7e10ed7297157c2e6ac677f4e36e9 | |
parent | 351e749246a278b60a7e18c1eeafdc8ec70efea2 (diff) | |
download | samba-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.h | 6 | ||||
-rw-r--r-- | source3/libsmb/clikrb5.c | 9 |
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; } |