The branch, master has been updated via 050ca45 winbind: Remove winbind_messaging_context via d8a01d0 winbind: winbind_messaging_context -> server_messaging_context via e1f12ac winbind: Remove winbind_event_context via 7e83d14 winbind: Replace winbind_event_context with server_event_context via d27f38d libnet_join: fix "net rpc oldjoin" via 9466796 s3:selftest: add samba3.blackbox.net_rpc_oldjoin test via d74c608 nsswitch: Slightly simplify winbindd_request_response via ffbf393 ntlm_auth: Use libwbclient in get_winbind_netbios_name() via 403003b ntlm_auth: Use libwbclient in get_require_membership_sid() via 25e85a4 ntlm_auth: Use libwbclient in get_winbind_domain() via 5781cef ntlm_auth: Use libwbclient in winbind_separator() via 87c4432 libwbclient: Fix two signed/unsigned hickups via e83f389 lib: Save a few bytes of .text via 73533b9 lib: Fix a false/NULL hickup via 98dd651 lib: Simplify is_ipaddress_v6 via 2a86876 lib: Avoid a pointless static variable via 03be840 winbindd: Fix some signed/unsigned warnings via df5a534 nsswitch: Fix a typo via c19b49b tevent: Fix typos via 625d27d libsmb: Fix a typo from 993fa57 lib: tevent: Minor cleanup. wakeup_fd can always be gotten from the event context.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 050ca45dc7fc5bbab6e1c60b919ac0b1e9661e27 Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 17 11:47:37 2017 +0100 winbind: Remove winbind_messaging_context BUG: https://bugzilla.samba.org/show_bug.cgi?id=13150 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Sat Nov 18 04:07:24 CET 2017 on sn-devel-144 commit d8a01d09c13728f36107f6eb94ecb7653706a4db Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 17 11:42:34 2017 +0100 winbind: winbind_messaging_context -> server_messaging_context Don't use winbind_messaging_context anymore. This fixes a bug analysed by Peter Somogyi <psomo...@hu.ibm.com>: If a parent winbind forks, it only called reinit_after_fork on winbind_messaging_context. On the other hand, deep in dbwrap_open we use server_messaging_context(). This is not reinitialized by winbind_reinit_after fork, so the parent and child share a ctdb connection. This is invalid, because replies from ctdb end up in the wrong process. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13150 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit e1f12acc13a3cc004518ac3460c6000ea0b95115 Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 17 11:37:30 2017 +0100 winbind: Remove winbind_event_context BUG: https://bugzilla.samba.org/show_bug.cgi?id=13150 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7e83d1489406cd53d72097e40bf02295c88ea61e Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 17 11:35:19 2017 +0100 winbind: Replace winbind_event_context with server_event_context There's no point in having two global event contexts BUG: https://bugzilla.samba.org/show_bug.cgi?id=13150 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d27f38d35bf111a5c0a898a5ef8b7dd0b320da0d Author: Stefan Metzmacher <me...@samba.org> Date: Thu Nov 16 21:09:20 2017 +0000 libnet_join: fix "net rpc oldjoin" We need to open the ncacn_np (smb) transport connection with anonymous credentials. In order to do netr_ServerPasswordSet*() we need to establish a 2nd netlogon connection using dcerpc schannel authentication. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13149 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9466796c87cc4ca8d32da553421cd8ecef1bb8e4 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Nov 17 15:51:36 2017 +0100 s3:selftest: add samba3.blackbox.net_rpc_oldjoin test This demonstrates that "net rpc oldjoin" is currently broken. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13149 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d74c60807cdaec2835c400a6de0fa5e381cc1392 Author: Volker Lendecke <v...@samba.org> Date: Sat Jul 15 11:54:14 2017 +0200 nsswitch: Slightly simplify winbindd_request_response We don't need a separate variable, C passes a copy on the stack Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit ffbf393fba69d715d150fbc4f147bf0a97fbb69a Author: Volker Lendecke <v...@samba.org> Date: Sat Jul 15 10:56:47 2017 +0200 ntlm_auth: Use libwbclient in get_winbind_netbios_name() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 403003b528a2445ac128db5750b87de3967372bd Author: Volker Lendecke <v...@samba.org> Date: Sat Jul 15 11:06:38 2017 +0200 ntlm_auth: Use libwbclient in get_require_membership_sid() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 25e85a4507d959a922ffc9f2eea144fbe02c37d2 Author: Volker Lendecke <v...@samba.org> Date: Sat Jul 15 10:55:09 2017 +0200 ntlm_auth: Use libwbclient in get_winbind_domain() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 5781cefc427b3f9f89b4470c1504ab941fa5334e Author: Volker Lendecke <v...@samba.org> Date: Sat Jul 15 10:52:17 2017 +0200 ntlm_auth: Use libwbclient in winbind_separator() Avoid direct winbindd_request_response() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 87c443256223a91192b8ea3db94fbd40557be881 Author: Volker Lendecke <v...@samba.org> Date: Thu Jul 13 15:52:15 2017 +0200 libwbclient: Fix two signed/unsigned hickups Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit e83f3891b2f6a105d30120c2f6917fa7cc8ae969 Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 15 13:12:05 2017 +0100 lib: Save a few bytes of .text Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 73533b90cc60d684c60ffb5c18e9d940e2ce3c32 Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 13 16:21:31 2017 +0100 lib: Fix a false/NULL hickup Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 98dd651f8dd728aaeb09aa53c4c38d132b02fa50 Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 13 16:54:09 2017 +0100 lib: Simplify is_ipaddress_v6 Do an early return, avoid an "else", avoid an indentation level Review with git show -b Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2a86876c223aca33865fcb11ba59af1faf91f86c Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 13 16:15:42 2017 +0100 lib: Avoid a pointless static variable Saves a few bytes of .text Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 03be840a7a59d8e443f0d6c3a3f071fc6fcf340b Author: Volker Lendecke <v...@samba.org> Date: Sun Aug 6 18:04:12 2017 +0200 winbindd: Fix some signed/unsigned warnings Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit df5a5341987eee1ef4666ab01d7e714159388a75 Author: Volker Lendecke <v...@samba.org> Date: Mon Jul 17 15:40:11 2017 +0200 nsswitch: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit c19b49bad8071bc33089e5b3c053fcb890a8ea11 Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 30 13:51:25 2017 +0100 tevent: Fix typos While there, fix comment formatting Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 625d27d3fc5b5dbddb43d21aa467431f2043d89d Author: Volker Lendecke <v...@samba.org> Date: Tue Nov 7 13:04:21 2017 +0100 libsmb: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/tevent/tevent.h | 4 +- lib/util/util_net.c | 114 ++++++++++----------- nsswitch/libwbclient/wbc_pam.c | 4 +- nsswitch/wb_common.c | 14 ++- nsswitch/winbind_struct_protocol.h | 2 +- source3/libnet/libnet_join.c | 53 ++++++++-- source3/libsmb/namequery.c | 2 +- source3/script/tests/test_net_rpc_oldjoin.sh | 32 ++++++ source3/selftest/tests.py | 4 + source3/torture/torture.c | 9 -- source3/utils/ntlm_auth.c | 64 ++++++------ source3/winbindd/idmap_ldap.c | 2 +- source3/winbindd/idmap_rfc2307.c | 2 +- source3/winbindd/winbindd.c | 110 +++++++------------- source3/winbindd/winbindd_cache.c | 6 +- source3/winbindd/winbindd_cm.c | 36 +++---- source3/winbindd/winbindd_cred_cache.c | 14 +-- source3/winbindd/winbindd_dual.c | 50 ++++----- source3/winbindd/winbindd_dual_srv.c | 6 +- source3/winbindd/winbindd_irpc.c | 10 +- source3/winbindd/winbindd_misc.c | 2 +- source3/winbindd/winbindd_pam_auth.c | 2 +- source3/winbindd/winbindd_pam_auth_crap.c | 2 +- source3/winbindd/winbindd_pam_chauthtok.c | 2 +- .../winbindd/winbindd_pam_chng_pswd_auth_crap.c | 2 +- source3/winbindd/winbindd_pam_logoff.c | 2 +- source3/winbindd/winbindd_proto.h | 2 - source3/winbindd/winbindd_util.c | 2 +- 28 files changed, 288 insertions(+), 266 deletions(-) create mode 100755 source3/script/tests/test_net_rpc_oldjoin.sh Changeset truncated at 500 lines: diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h index 728cf62..7284a85 100644 --- a/lib/tevent/tevent.h +++ b/lib/tevent/tevent.h @@ -936,8 +936,8 @@ void tevent_req_set_cancel_fn(struct tevent_req *req, tevent_req_cancel_fn fn); * * @param[in] req The request to use. * - * @return This function returns true is the request is cancelable, - * othererwise false is returned. + * @return This function returns true if the request is + * cancelable, otherwise false is returned. * * @note Even if the function returns true, the caller need to wait * for the function to complete normally. diff --git a/lib/util/util_net.c b/lib/util/util_net.c index cbc836c..f0a3016 100644 --- a/lib/util/util_net.c +++ b/lib/util/util_net.c @@ -36,15 +36,14 @@ void zero_sockaddr(struct sockaddr_storage *pss) { - ZERO_STRUCTP(pss); /* Ensure we're at least a valid sockaddr-storage. */ - pss->ss_family = AF_INET; + *pss = (struct sockaddr_storage) { .ss_family = AF_INET }; } static char *normalize_ipv6_literal(const char *str, char *buf, size_t *_len) { #define IPv6_LITERAL_NET ".ipv6-literal.net" - static const size_t llen = sizeof(IPv6_LITERAL_NET) - 1; + const size_t llen = sizeof(IPv6_LITERAL_NET) - 1; size_t len = *_len; int cmp; size_t i; @@ -53,7 +52,7 @@ static char *normalize_ipv6_literal(const char *str, char *buf, size_t *_len) size_t cnt_chars = 0; if (len <= llen) { - return false; + return NULL; } /* ignore a trailing '.' */ @@ -490,76 +489,75 @@ bool is_ipaddress_v6(const char *str) #if defined(HAVE_IPV6) int ret = -1; char *p = NULL; + char buf[INET6_ADDRSTRLEN] = { 0, }; + size_t len; + const char *addr = str; + const char *idxs = NULL; + unsigned int idx = 0; + struct in6_addr ip6; p = strchr_m(str, ':'); if (p == NULL) { return is_ipv6_literal(str); - } else { - char buf[INET6_ADDRSTRLEN] = { 0, }; - size_t len; - const char *addr = str; - const char *idxs = NULL; - unsigned int idx = 0; - struct in6_addr ip6; - - p = strchr_m(str, SCOPE_DELIMITER); - if (p && (p > str)) { - len = PTR_DIFF(p, str); - idxs = p + 1; - } else { - len = strlen(str); - } + } - if (len >= sizeof(buf)) { - return false; - } - if (idxs != NULL) { - strncpy(buf, str, len); - addr = buf; - } + p = strchr_m(str, SCOPE_DELIMITER); + if (p && (p > str)) { + len = PTR_DIFF(p, str); + idxs = p + 1; + } else { + len = strlen(str); + } - /* - * Cope with link-local. - * This is IP:v6:addr%ifidx. - */ - if (idxs != NULL) { - char c; + if (len >= sizeof(buf)) { + return false; + } + if (idxs != NULL) { + strncpy(buf, str, len); + addr = buf; + } - ret = sscanf(idxs, "%5u%c", &idx, &c); - if (ret != 1) { - idx = 0; - } + /* + * Cope with link-local. + * This is IP:v6:addr%ifidx. + */ + if (idxs != NULL) { + char c; - if (idx > 0 && idx < UINT16_MAX) { - /* a valid index */ - idxs = NULL; - } + ret = sscanf(idxs, "%5u%c", &idx, &c); + if (ret != 1) { + idx = 0; } - /* - * Cope with link-local. - * This is IP:v6:addr%ifname. - */ - if (idxs != NULL) { - idx = if_nametoindex(idxs); - - if (idx > 0) { - /* a valid index */ - idxs = NULL; - } + if (idx > 0 && idx < UINT16_MAX) { + /* a valid index */ + idxs = NULL; } + } - if (idxs != NULL) { - return false; - } + /* + * Cope with link-local. + * This is IP:v6:addr%ifname. + */ + if (idxs != NULL) { + idx = if_nametoindex(idxs); - ret = inet_pton(AF_INET6, addr, &ip6); - if (ret <= 0) { - return false; + if (idx > 0) { + /* a valid index */ + idxs = NULL; } + } - return true; + if (idxs != NULL) { + return false; } + + ret = inet_pton(AF_INET6, addr, &ip6); + if (ret <= 0) { + return false; + } + + return true; #endif return false; } diff --git a/nsswitch/libwbclient/wbc_pam.c b/nsswitch/libwbclient/wbc_pam.c index cb2d5a0..c31220a 100644 --- a/nsswitch/libwbclient/wbc_pam.c +++ b/nsswitch/libwbclient/wbc_pam.c @@ -727,7 +727,7 @@ wbcErr wbcCtxLogoffUserEx(struct wbcContext *ctx, struct winbindd_request request; struct winbindd_response response; wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; - int i; + size_t i; /* validate input */ @@ -1269,7 +1269,7 @@ wbcErr wbcCtxCredentialCache(struct wbcContext *ctx, struct winbindd_response response; struct wbcNamedBlob *initial_blob = NULL; struct wbcNamedBlob *challenge_blob = NULL; - int i; + size_t i; ZERO_STRUCT(request); ZERO_STRUCT(response); diff --git a/nsswitch/wb_common.c b/nsswitch/wb_common.c index 262181a..d6746b4 100644 --- a/nsswitch/wb_common.c +++ b/nsswitch/wb_common.c @@ -719,16 +719,15 @@ NSS_STATUS winbindd_request_response(struct winbindd_context *ctx, struct winbindd_response *response) { NSS_STATUS status = NSS_STATUS_UNAVAIL; - struct winbindd_context *wb_ctx = ctx; if (ctx == NULL) { - wb_ctx = &wb_global_ctx; + ctx = &wb_global_ctx; } - status = winbindd_send_request(wb_ctx, req_type, 0, request); + status = winbindd_send_request(ctx, req_type, 0, request); if (status != NSS_STATUS_SUCCESS) return (status); - status = winbindd_get_response(wb_ctx, response); + status = winbindd_get_response(ctx, response); return status; } @@ -739,16 +738,15 @@ NSS_STATUS winbindd_priv_request_response(struct winbindd_context *ctx, struct winbindd_response *response) { NSS_STATUS status = NSS_STATUS_UNAVAIL; - struct winbindd_context *wb_ctx = ctx; if (ctx == NULL) { - wb_ctx = &wb_global_ctx; + ctx = &wb_global_ctx; } - status = winbindd_send_request(wb_ctx, req_type, 1, request); + status = winbindd_send_request(ctx, req_type, 1, request); if (status != NSS_STATUS_SUCCESS) return (status); - status = winbindd_get_response(wb_ctx, response); + status = winbindd_get_response(ctx, response); return status; } diff --git a/nsswitch/winbind_struct_protocol.h b/nsswitch/winbind_struct_protocol.h index a2e7d4c..9100dbc 100644 --- a/nsswitch/winbind_struct_protocol.h +++ b/nsswitch/winbind_struct_protocol.h @@ -258,7 +258,7 @@ struct winbindd_request { gid_t gid; /* getgrgid, gid_to_sid */ uint32_t ndrcmd; struct { - /* We deliberatedly don't split into domain/user to + /* We deliberately don't split into domain/user to avoid having the client know what the separator character is. */ fstring user; diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c index eb6b894..0595cfe 100644 --- a/source3/libnet/libnet_join.c +++ b/source3/libnet/libnet_join.c @@ -1044,12 +1044,23 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx, NTSTATUS status, result; union lsa_PolicyInformation *info = NULL; struct dcerpc_binding_handle *b; + const char *account = r->in.admin_account; + const char *domain = r->in.admin_domain; + const char *password = r->in.admin_password; + bool use_kerberos = r->in.use_kerberos; + + if (r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_UNSECURE) { + account = ""; + domain = ""; + password = NULL; + use_kerberos = false; + } status = libnet_join_connect_dc_ipc(r->in.dc_name, - r->in.admin_account, - r->in.admin_domain, - r->in.admin_password, - r->in.use_kerberos, + account, + domain, + password, + use_kerberos, cli); if (!NT_STATUS_IS_OK(status)) { goto done; @@ -1121,16 +1132,19 @@ static NTSTATUS libnet_join_joindomain_rpc_unsecure(TALLOC_CTX *mem_ctx, struct cli_state *cli) { TALLOC_CTX *frame = talloc_stackframe(); - struct rpc_pipe_client *netlogon_pipe = NULL; + struct rpc_pipe_client *authenticate_pipe = NULL; + struct rpc_pipe_client *passwordset_pipe = NULL; struct cli_credentials *cli_creds; struct netlogon_creds_cli_context *netlogon_creds = NULL; + struct netlogon_creds_CredentialState *creds = NULL; + uint32_t netlogon_flags = 0; size_t len = 0; bool ok; DATA_BLOB new_trust_blob = data_blob_null; NTSTATUS status; status = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon, - &netlogon_pipe); + &authenticate_pipe); if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(frame); return status; @@ -1167,7 +1181,7 @@ static NTSTATUS libnet_join_joindomain_rpc_unsecure(TALLOC_CTX *mem_ctx, CRED_SPECIFIED); status = rpccli_create_netlogon_creds_ctx( - cli_creds, netlogon_pipe->desthost, r->in.msg_ctx, + cli_creds, authenticate_pipe->desthost, r->in.msg_ctx, frame, &netlogon_creds); if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(frame); @@ -1182,6 +1196,29 @@ static NTSTATUS libnet_join_joindomain_rpc_unsecure(TALLOC_CTX *mem_ctx, return status; } + status = netlogon_creds_cli_get(netlogon_creds, frame, &creds); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + netlogon_flags = creds->negotiate_flags; + TALLOC_FREE(creds); + + if (netlogon_flags & NETLOGON_NEG_AUTHENTICATED_RPC) { + status = cli_rpc_pipe_open_schannel_with_creds(cli, + &ndr_table_netlogon, + NCACN_NP, + netlogon_creds, + &passwordset_pipe); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + } else { + passwordset_pipe = authenticate_pipe; + } + len = strlen(r->in.machine_password); ok = convert_string_talloc(frame, CH_UNIX, CH_UTF16, r->in.machine_password, len, @@ -1197,7 +1234,7 @@ static NTSTATUS libnet_join_joindomain_rpc_unsecure(TALLOC_CTX *mem_ctx, } status = netlogon_creds_cli_ServerPasswordSet(netlogon_creds, - netlogon_pipe->binding_handle, + passwordset_pipe->binding_handle, &new_trust_blob, NULL); /* new_version */ if (!NT_STATUS_IS_OK(status)) { diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index e39d761..afc2bc0 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -2556,7 +2556,7 @@ static NTSTATUS resolve_ads(const char *name, freeaddrinfo(res); } } else { - /* use all the IP addresses from the SRV sresponse */ + /* use all the IP addresses from the SRV response */ int j; for (j = 0; j < dcs[i].num_ips; j++) { (*return_iplist)[*return_count].port = dcs[i].port; diff --git a/source3/script/tests/test_net_rpc_oldjoin.sh b/source3/script/tests/test_net_rpc_oldjoin.sh new file mode 100755 index 0000000..070fcc1 --- /dev/null +++ b/source3/script/tests/test_net_rpc_oldjoin.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +if [ $# -lt 3 ]; then +cat <<EOF +Usage: test_net_rpc_oldjoin.sh SERVER PREFIX SMB_CONF_PATH +EOF +exit 1; +fi + +SERVER="$1" +PREFIX="$2" +SMB_CONF_PATH="$3" +shift 3 + +incdir=`dirname $0`/../../../testprogs/blackbox +. $incdir/subunit.sh +maccount="OLDJOINTEST" +privatedir="$PREFIX/private" + +UID_WRAPPER_ROOT=1 +export UID_WRAPPER_ROOT + +OPTIONS="--configfile $SMB_CONF_PATH --option=netbiosname=$maccount --option=security=domain --option=domainlogons=no --option=privatedir=$privatedir" + +testit "mkdir -p $privatedir" mkdir -p $privatedir || failed=`expr $failed + 1` +testit "smbpasswd -a -m" $VALGRIND $BINDIR/smbpasswd -L -c $SMB_CONF_PATH -a -m "$maccount" || failed=`expr $failed + 1` +testit "net_rpc_oldjoin" $VALGRIND $BINDIR/net rpc oldjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1` +testit "net_rpc_testjoin1" $VALGRIND $BINDIR/net rpc testjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1` +testit "net_rpc_changetrustpw" $VALGRIND $BINDIR/net rpc changetrustpw -S $SERVER $OPTIONS || failed=`expr $failed + 1` +testit "net_rpc_testjoin2" $VALGRIND $BINDIR/net rpc testjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1` + +testok $0 $failed diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index 5b12355..3e5cffd 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -588,6 +588,10 @@ plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"), "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join", configuration]) +plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local", + [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"), + "$SERVER", "$PREFIX/net_rpc_oldjoin", + "$SMB_CONF_PATH"]) plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"), diff --git a/source3/torture/torture.c b/source3/torture/torture.c index 360adad..481154f 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -11588,15 +11588,6 @@ static struct { { "qpathinfo-bufsize", run_qpathinfo_bufsize, 0 }, {NULL, NULL, 0}}; -/* - * dummy function to satisfy linker dependency - */ -struct tevent_context *winbind_event_context(void); -struct tevent_context *winbind_event_context(void) -{ - return NULL; -} - /**************************************************************************** run a specified test or "ALL" ****************************************************************************/ diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c index 5a10e27..3f54490 100644 --- a/source3/utils/ntlm_auth.c +++ b/source3/utils/ntlm_auth.c @@ -280,24 +280,24 @@ static void gensec_want_feature_list(struct gensec_security *state, char* featur static char winbind_separator(void) { - struct winbindd_response response; + struct wbcInterfaceDetails *details; + wbcErr ret; static bool got_sep; static char sep; if (got_sep) return sep; - ZERO_STRUCT(response); - - /* Send off request */ - - if (winbindd_request_response(NULL, WINBINDD_INFO, NULL, &response) != - NSS_STATUS_SUCCESS) { + ret = wbcInterfaceDetails(&details); + if (!WBC_ERROR_IS_OK(ret)) { d_fprintf(stderr, "could not obtain winbind separator!\n"); return *lp_winbind_separator(); } - sep = response.data.info.winbind_separator; + sep = details->winbind_separator; + + wbcFreeMemory(details); + got_sep = True; if (!sep) { @@ -310,24 +310,25 @@ static char winbind_separator(void) const char *get_winbind_domain(void) { - struct winbindd_response response; + struct wbcInterfaceDetails *details; + wbcErr ret; static fstring winbind_domain; if (*winbind_domain) { return winbind_domain; } - ZERO_STRUCT(response); - /* Send off request */ - if (winbindd_request_response(NULL, WINBINDD_DOMAIN_NAME, NULL, &response) != - NSS_STATUS_SUCCESS) { + ret = wbcInterfaceDetails(&details); -- Samba Shared Repository