From: Stefan Metzmacher Date: Thu, 10 Apr 2025 14:48:48 +0000 (+0200) Subject: s3:libsmb: pass struct loadparm_context to smbsock_any_connect() X-Git-Tag: tevent-0.17.0~235 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=56f8352eb4fc9bb6f94d260813902e9ff5bf2142;p=thirdparty%2Fsamba.git s3:libsmb: pass struct loadparm_context to smbsock_any_connect() Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source3/libsmb/smbsock_connect.c b/source3/libsmb/smbsock_connect.c index 91f7db1743a..2a4cfa80043 100644 --- a/source3/libsmb/smbsock_connect.c +++ b/source3/libsmb/smbsock_connect.c @@ -1031,6 +1031,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs, const char **calling_names, int *calling_types, size_t num_addrs, + struct loadparm_context *lp_ctx, const struct smb_transports *transports, int sec_timeout, int *pfd, size_t *chosen_index, diff --git a/source3/libsmb/smbsock_connect.h b/source3/libsmb/smbsock_connect.h index 1a0fbce85a3..902e977cfeb 100644 --- a/source3/libsmb/smbsock_connect.h +++ b/source3/libsmb/smbsock_connect.h @@ -60,10 +60,11 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs, const char **calling_names, int *calling_types, size_t num_addrs, + struct loadparm_context *lp_ctx, const struct smb_transports *transports, int sec_timeout, int *pfd, size_t *chosen_index, uint16_t *chosen_port) - NONNULL(1) NONNULL(7) NONNULL(9); + NONNULL(1) NONNULL(7) NONNULL(8) NONNULL(10); #endif /* _LIBSMB_SMBSOCK_CONNECT_H_ */ diff --git a/source3/torture/test_smbsock_any_connect.c b/source3/torture/test_smbsock_any_connect.c index 98a0618b952..6cdad1149fc 100644 --- a/source3/torture/test_smbsock_any_connect.c +++ b/source3/torture/test_smbsock_any_connect.c @@ -18,6 +18,8 @@ */ #include "includes.h" +#include "lib/param/param.h" +#include "source3/param/loadparm.h" #include "libsmb/smbsock_connect.h" #include "torture/proto.h" @@ -30,8 +32,14 @@ bool run_smb_any_connect(int dummy) smb_transports_parse("client smb transports", lp_client_smb_transports()); size_t chosen_index; + struct loadparm_context *lp_ctx = NULL; uint16_t port; + lp_ctx = loadparm_init_s3(NULL, loadparm_s3_helpers()); + if (lp_ctx == NULL) { + return false; + } + interpret_string_addr(&addrs[0], "192.168.99.5", 0); interpret_string_addr(&addrs[1], "192.168.99.6", 0); interpret_string_addr(&addrs[2], "192.168.99.7", 0); @@ -39,8 +47,9 @@ bool run_smb_any_connect(int dummy) interpret_string_addr(&addrs[4], "192.168.99.9", 0); status = smbsock_any_connect(addrs, NULL, NULL, NULL, NULL, - ARRAY_SIZE(addrs), &ts, 0, + ARRAY_SIZE(addrs), lp_ctx, &ts, 0, &fd, &chosen_index, &port); + TALLOC_FREE(lp_ctx); d_printf("smbsock_any_connect returned %s (fd %d)\n", nt_errstr(status), NT_STATUS_IS_OK(status) ? fd : -1); diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 9452a8db7e0..6d90f691b66 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -1544,6 +1544,7 @@ static bool find_dc(TALLOC_CTX *mem_ctx, uint32_t request_flags, int *fd) { + struct loadparm_context *lp_ctx = NULL; struct dc_name_ip *dcs = NULL; int num_dcs = 0; @@ -1575,6 +1576,12 @@ static bool find_dc(TALLOC_CTX *mem_ctx, return false; } + lp_ctx = loadparm_init_s3(talloc_tos(), loadparm_s3_helpers()); + if (lp_ctx == NULL) { + DBG_ERR("loadparm_init_s3 failed\n"); + return false; + } + again: D_DEBUG("Retrieving a list of IP addresses for DCs.\n"); if (!get_dcs(mem_ctx, domain, &dcs, &num_dcs, request_flags) || (num_dcs == 0)) @@ -1603,7 +1610,8 @@ static bool find_dc(TALLOC_CTX *mem_ctx, "(timeout of 10 sec for each DC).\n", num_dcs); status = smbsock_any_connect(addrs, dcnames, NULL, NULL, NULL, - num_addrs, &ts, 10, fd, &fd_index, NULL); + num_addrs, lp_ctx, &ts, + 10, fd, &fd_index, NULL); if (!NT_STATUS_IS_OK(status)) { for (i=0; i