summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Cabrero <scabrero@samba.org>2022-06-13 17:13:20 +0200
committerJeremy Allison <jra@samba.org>2022-06-27 15:50:30 +0000
commited784ed07e9eca5d5c653e8c826fd228d9182f8a (patch)
tree5dabddb77be3f425dfbda9bb723f5a4f21929aec
parent89c3f22407fed370d3b0fbc32a4a10a68a049db5 (diff)
downloadsamba-ed784ed07e9eca5d5c653e8c826fd228d9182f8a.tar.gz
s3:libads: Allocate ads->auth.ccache_name under ADS_STRUCT talloc context
Signed-off-by: Samuel Cabrero <scabrero@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--source3/libads/ads_struct.c2
-rw-r--r--source3/libnet/libnet_join.c10
2 files changed, 7 insertions, 5 deletions
diff --git a/source3/libads/ads_struct.c b/source3/libads/ads_struct.c
index e4739d7fd11..4e9a2d33c08 100644
--- a/source3/libads/ads_struct.c
+++ b/source3/libads/ads_struct.c
@@ -130,8 +130,6 @@ static void ads_destroy(ADS_STRUCT **ads)
#ifdef HAVE_LDAP
ads_disconnect(*ads);
#endif
- SAFE_FREE((*ads)->auth.ccache_name);
-
SAFE_FREE((*ads)->config.realm);
SAFE_FREE((*ads)->config.bind_path);
SAFE_FREE((*ads)->config.ldap_server_name);
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index 2c5e4631e50..4529615a41a 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -198,8 +198,12 @@ static ADS_STATUS libnet_connect_ads(const char *dns_domain_name,
}
if (ccname != NULL) {
- SAFE_FREE(my_ads->auth.ccache_name);
- my_ads->auth.ccache_name = SMB_STRDUP(ccname);
+ TALLOC_FREE(my_ads->auth.ccache_name);
+ my_ads->auth.ccache_name = talloc_strdup(my_ads, ccname);
+ if (my_ads->auth.ccache_name == NULL) {
+ status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
+ goto out;
+ }
setenv(KRB5_ENV_CCNAME, my_ads->auth.ccache_name, 1);
}
@@ -1041,7 +1045,7 @@ static ADS_STATUS libnet_join_post_processing_ads_modify(TALLOC_CTX *mem_ctx,
if (r->in.ads->auth.ccache_name != NULL) {
ads_kdestroy(r->in.ads->auth.ccache_name);
- r->in.ads->auth.ccache_name = NULL;
+ TALLOC_FREE(r->in.ads->auth.ccache_name);
}
TALLOC_FREE(r->in.ads);