The branch, master has been updated
       via  234a470 s3:libnet: accept empty realm for AD domains when only 
security=domain is set.
       via  632faa8 s3-libnet: Print error string even on successfuly 
completion of libnetjoin.
       via  169e8ae s3-libnetapi: Correctly check for lp_realm.
      from  4c408f6 libnet_join: use sitename if it was set by pre-join 
detection

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 234a470f198f8f09f46aaeaf58f966faccedef18
Author: Günther Deschner <g...@samba.org>
Date:   Tue May 31 18:47:34 2016 +0200

    s3:libnet: accept empty realm for AD domains when only security=domain is 
set.
    
    Initial patch from Matt Rogers @ RedHat.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11977
    
    Guenther
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    
    Autobuild-User(master): Günther Deschner <g...@samba.org>
    Autobuild-Date(master): Wed Jun 15 20:28:31 CEST 2016 on sn-devel-144

commit 632faa87610b3afca3f8d3e9f3f46ee6b87f362a
Author: Günther Deschner <g...@samba.org>
Date:   Wed Jun 15 16:04:29 2016 +0200

    s3-libnet: Print error string even on successfuly completion of libnetjoin.
    
    Sometimes useful information should be printed to the users.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11977
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>

commit 169e8aeda5e9d851ec818b5c2543ec59c8bc0c31
Author: Andreas Schneider <a...@samba.org>
Date:   Wed Jun 15 16:05:58 2016 +0200

    s3-libnetapi: Correctly check for lp_realm.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/netapi/joindomain.c | 11 +++++++----
 source3/libnet/libnet_join.c    | 17 +++++++++++++++++
 source3/utils/net_ads.c         |  5 +++++
 source3/utils/net_rpc.c         | 10 ++++++++++
 4 files changed, 39 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/netapi/joindomain.c b/source3/lib/netapi/joindomain.c
index 632c8c6..dc224b6 100644
--- a/source3/lib/netapi/joindomain.c
+++ b/source3/lib/netapi/joindomain.c
@@ -175,6 +175,7 @@ WERROR NetUnjoinDomain_l(struct libnetapi_ctx *mem_ctx,
        const char *domain = NULL;
        WERROR werr;
        struct libnetapi_private_ctx *priv;
+       const char *realm = lp_realm();
 
        priv = talloc_get_type_abort(mem_ctx->private_data,
                struct libnetapi_private_ctx);
@@ -186,8 +187,8 @@ WERROR NetUnjoinDomain_l(struct libnetapi_ctx *mem_ctx,
        werr = libnet_init_UnjoinCtx(mem_ctx, &u);
        W_ERROR_NOT_OK_RETURN(werr);
 
-       if (lp_realm()) {
-               domain = lp_realm();
+       if (realm[0] != '\0') {
+               domain = realm;
        } else {
                domain = lp_workgroup();
        }
@@ -352,8 +353,10 @@ WERROR NetGetJoinInformation_r(struct libnetapi_ctx *ctx,
 WERROR NetGetJoinInformation_l(struct libnetapi_ctx *ctx,
                               struct NetGetJoinInformation *r)
 {
-       if ((lp_security() == SEC_ADS) && lp_realm()) {
-               *r->out.name_buffer = talloc_strdup(ctx, lp_realm());
+       const char *realm = lp_realm();
+
+       if ((lp_security() == SEC_ADS) && realm[0] != '\0') {
+               *r->out.name_buffer = talloc_strdup(ctx, realm);
        } else {
                *r->out.name_buffer = talloc_strdup(ctx, lp_workgroup());
        }
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index c007183..abb9cff 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -2367,9 +2367,26 @@ static WERROR libnet_join_check_config(TALLOC_CTX 
*mem_ctx,
                        W_ERROR_HAVE_NO_MEMORY(wrong_conf);
                }
 
+               /*
+                * We should generate the warning for the special case when
+                * domain is AD, "security = domain" and the realm parameter is
+                * not set.
+                */
+               if (lp_security() == SEC_DOMAIN &&
+                   r->out.domain_is_ad &&
+                   !valid_realm) {
+                       libnet_join_set_error_string(mem_ctx, r,
+                               "Warning: when joining AD domains with 
security=domain, "
+                               "\"realm\" should be defined in the 
configuration (%s) "
+                               "and configuration modification was not 
requested",
+                               wrong_conf);
+                       return WERR_OK;
+               }
+
                libnet_join_set_error_string(mem_ctx, r,
                        "Invalid configuration (%s) and configuration 
modification "
                        "was not requested", wrong_conf);
+
                return WERR_CAN_NOT_COMPLETE;
        }
 
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index d565df1..f4c25e1 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -1599,6 +1599,11 @@ int net_ads_join(struct net_context *c, int argc, const 
char **argv)
                        r->out.netbios_domain_name);
        }
 
+       /* print out informative error string in case there is one */
+       if (r->out.error_string != NULL) {
+               d_printf("%s\n", r->out.error_string);
+       }
+
        /*
         * We try doing the dns update (if it was compiled in
         * and if it was not disabled on the command line).
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c
index 93caf04..1e3e286 100644
--- a/source3/utils/net_rpc.c
+++ b/source3/utils/net_rpc.c
@@ -428,6 +428,11 @@ static int net_rpc_oldjoin(struct net_context *c, int 
argc, const char **argv)
                        r->out.netbios_domain_name);
        }
 
+       /* print out informative error string in case there is one */
+       if (r->out.error_string != NULL) {
+               d_printf("%s\n", r->out.error_string);
+       }
+
        TALLOC_FREE(mem_ctx);
 
        return 0;
@@ -607,6 +612,11 @@ static int net_rpc_join_newstyle(struct net_context *c, 
int argc, const char **a
                        r->out.netbios_domain_name);
        }
 
+       /* print out informative error string in case there is one */
+       if (r->out.error_string != NULL) {
+               d_printf("%s\n", r->out.error_string);
+       }
+
        TALLOC_FREE(mem_ctx);
 
        return 0;


-- 
Samba Shared Repository

Reply via email to