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

Reply via email to