s3:libads: Alloc ads->server.realm under ADS_STRUCT talloc context
authorSamuel Cabrero <scabrero@samba.org>
Fri, 10 Jun 2022 13:04:51 +0000 (15:04 +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

index d7000afe06fe132f6797d63bc28cf287c128cfab..7480fb7d1c498f106e51d3a28e8d8e852a15d9ca 100644 (file)
@@ -130,7 +130,6 @@ static void ads_destroy(ADS_STRUCT **ads)
 #ifdef HAVE_LDAP
                ads_disconnect(*ads);
 #endif
-               SAFE_FREE((*ads)->server.realm);
                SAFE_FREE((*ads)->server.workgroup);
                SAFE_FREE((*ads)->server.ldap_server);
 
@@ -178,7 +177,13 @@ ADS_STRUCT *ads_init(TALLOC_CTX *mem_ctx,
        ads_zero_ldap(ads);
 #endif
 
-       ads->server.realm = realm? SMB_STRDUP(realm) : NULL;
+       ads->server.realm = talloc_strdup(ads, realm);
+       if (realm != NULL && ads->server.realm == NULL) {
+               DBG_WARNING("Out of memory\n");
+               TALLOC_FREE(ads);
+               return NULL;
+       }
+
        ads->server.workgroup = workgroup ? SMB_STRDUP(workgroup) : NULL;
        ads->server.ldap_server = ldap_server? SMB_STRDUP(ldap_server) : NULL;
 
@@ -223,4 +228,4 @@ bool ads_set_sasl_wrap_flags(ADS_STRUCT *ads, unsigned flags)
        ads->auth.flags = flags | other_flags;
 
        return true;
-}
\ No newline at end of file
+}