From: Andreas Schneider Date: Thu, 23 Nov 2023 14:21:49 +0000 (+0100) Subject: s3:libnet: Fix memory leak in libnet_join_connect_dc_ipc() X-Git-Tag: tdb-1.4.11~909 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf688e0d2afb8e2d28ac06a306296fd071dd6128;p=thirdparty%2Fsamba.git s3:libnet: Fix memory leak in libnet_join_connect_dc_ipc() Direct leak of 885 byte(s) in 1 object(s) allocated from: #0 0x7f261b8dc03f in malloc (/lib64/libasan.so.8+0xdc03f) (BuildId: 3e1694ad218c99a8b1b69231666a27df63cf19d0) #1 0x7f261b2c2bc2 in __talloc_with_prefix ../../lib/talloc/talloc.c:783 #2 0x7f261b2c543c in _talloc_pool ../../lib/talloc/talloc.c:838 #3 0x7f261b2c543c in _talloc_pooled_object ../../lib/talloc/talloc.c:906 #4 0x7f261a69cac9 in __tevent_req_create ../../lib/tevent/tevent_req.c:98 #5 0x7f261a75bf55 in cli_full_connection_creds_send ../../source3/libsmb/cliconnect.c:3455 #6 0x7f261a75c4b7 in cli_full_connection_creds ../../source3/libsmb/cliconnect.c:3818 #7 0x7f261b70d39f in libnet_join_connect_dc_ipc ../../source3/libnet/libnet_join.c:1146 #8 0x7f261b715794 in libnet_join_lookup_dc_rpc ../../source3/libnet/libnet_join.c:1188 #9 0x7f261b715794 in libnet_DomainJoin ../../source3/libnet/libnet_join.c:2812 #10 0x7f261b715794 in libnet_Join ../../source3/libnet/libnet_join.c:3040 #11 0x555bd93671ea in net_ads_join ../../source3/utils/net_ads.c:1855 #12 0x555bd9415ca9 in net_join ../../source3/utils/net_join.c:45 #13 0x555bd940b972 in net_run_function ../../source3/utils/net_util.c:464 #14 0x555bd9363129 in main ../../source3/utils/net.c:1372 #15 0x7f2616a281af in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 Signed-off-by: Andreas Schneider Reviewed-by: Volker Lendecke --- diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c index b8c7256bd16..89e5239fd9e 100644 --- a/source3/libnet/libnet_join.c +++ b/source3/libnet/libnet_join.c @@ -1110,7 +1110,8 @@ static bool libnet_join_joindomain_store_secrets(TALLOC_CTX *mem_ctx, Connect dc's IPC$ share ****************************************************************/ -static NTSTATUS libnet_join_connect_dc_ipc(const char *dc, +static NTSTATUS libnet_join_connect_dc_ipc(TALLOC_CTX *mem_ctx, + const char *dc, const char *user, const char *domain, const char *pass, @@ -1143,7 +1144,7 @@ static NTSTATUS libnet_join_connect_dc_ipc(const char *dc, return NT_STATUS_NO_MEMORY; } - status = cli_full_connection_creds(NULL, + status = cli_full_connection_creds(mem_ctx, cli, NULL, dc, @@ -1185,7 +1186,8 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx, use_kerberos = false; } - status = libnet_join_connect_dc_ipc(r->in.dc_name, + status = libnet_join_connect_dc_ipc(mem_ctx, + r->in.dc_name, account, domain, password, @@ -1934,7 +1936,8 @@ static NTSTATUS libnet_join_unjoindomain_rpc(TALLOC_CTX *mem_ctx, ZERO_STRUCT(domain_pol); ZERO_STRUCT(user_pol); - status = libnet_join_connect_dc_ipc(r->in.dc_name, + status = libnet_join_connect_dc_ipc(mem_ctx, + r->in.dc_name, r->in.admin_account, r->in.admin_domain, r->in.admin_password,