s3:libads: Allocate ads->config.server_site_name under ADS_STRUCT talloc context
authorSamuel Cabrero <scabrero@samba.org>
Wed, 15 Jun 2022 10:09:21 +0000 (12:09 +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/libads/ldap.c

index d734d47e653e1d01afebf2ae37d0851eebc29174..2a583efb685ccab30fcd60a729a23a9e676a4a79 100644 (file)
@@ -153,7 +153,6 @@ static void ads_destroy(ADS_STRUCT **ads)
 #ifdef HAVE_LDAP
                ads_disconnect(*ads);
 #endif
-               SAFE_FREE((*ads)->config.server_site_name);
                SAFE_FREE((*ads)->config.client_site_name);
                SAFE_FREE((*ads)->config.schema_path);
                SAFE_FREE((*ads)->config.config_path);
index 1693ab1debe674ba94cfbd4a0b4ad3604e66caea..0a9a59447bbb21000578defb254872f21bb46dc3 100755 (executable)
@@ -295,7 +295,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, bool gc,
        TALLOC_FREE(ads->config.realm);
        TALLOC_FREE(ads->config.bind_path);
        TALLOC_FREE(ads->config.ldap_server_name);
-       SAFE_FREE(ads->config.server_site_name);
+       TALLOC_FREE(ads->config.server_site_name);
        SAFE_FREE(ads->config.client_site_name);
        TALLOC_FREE(ads->server.workgroup);
 
@@ -332,8 +332,14 @@ static bool ads_try_connect(ADS_STRUCT *ads, bool gc,
 
        if (*cldap_reply.server_site) {
                ads->config.server_site_name =
-                       SMB_STRDUP(cldap_reply.server_site);
+                       talloc_strdup(ads, cldap_reply.server_site);
+               if (ads->config.server_site_name == NULL) {
+                       DBG_WARNING("Out of memory\n");
+                       ret = false;
+                       goto out;
+               }
        }
+
        if (*cldap_reply.client_site) {
                ads->config.client_site_name =
                        SMB_STRDUP(cldap_reply.client_site);