s3:libads: Allocate ads->auth.ccache_name under ADS_STRUCT talloc context
authorSamuel Cabrero <scabrero@samba.org>
Mon, 13 Jun 2022 15:13:20 +0000 (17:13 +0200)
committerJeremy Allison <jra@samba.org>
Mon, 27 Jun 2022 15:50:30 +0000 (15:50 +0000)
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/libads/ads_struct.c
source3/libnet/libnet_join.c

index e4739d7fd11b2df2bcc5546d150da13d9729a489..4e9a2d33c0806732e1838875d2577cdf33d09212 100644 (file)
@@ -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);
index 2c5e4631e509db4be7825649dcb8141fe86c8bd4..4529615a41a28214621f86c5f50b63c62f8ea119 100644 (file)
@@ -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);