The branch, master has been updated
       via  fa5413b63c8 s3:libnet: Do not set ADS_AUTH_ALLOW_NTLMSSP in FIPS 
mode
       via  f03abaec2ab s3:winbindd: Do not set ADS_AUTH_ALLOW_NTLMSSP in FIPS 
mode
       via  fcf225a356a s3:winbindd: Remove trailing spaces from winbindd_ads.c
       via  9624e60e8c3 s4:selftest: plan test suite 
samba4.blackbox.test_weak_disable_ntlmssp_ldap
       via  eb0fa26dce7 tests: Add test for disabling NTLMSSP for ldap client 
connections
       via  17ea2ccdabb s3:libads: Disable NTLMSSP if not allowed (for builds 
without kerberos)
       via  5f6251abf2f s3:libads: Improve debug messages for SASL bind
       via  7785eb9b780 s3:libads: Disable NTLMSSP for FIPS
       via  49d18f2d6e8 s3:libads: Remove trailing spaces from sasl.c
       via  afcdb090769 s3:utils: set ads->auth.flags using krb5_state
       via  6843bdae306 wafsamba: Add our own implmentation to generate the 
clangdb
       via  85dbc023c30 wafsamba: Remove clangdb code which doesn't work
      from  82a21581c63 build: Without getrandom() require gnutls 3.7.2

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


- Log -----------------------------------------------------------------
commit fa5413b63c8f4a20ab5b803f5cc523e0658eefc9
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Fri Jan 21 12:01:33 2022 +0100

    s3:libnet: Do not set ADS_AUTH_ALLOW_NTLMSSP in FIPS mode
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <me...@samba.org>
    Autobuild-Date(master): Sat Jan 22 00:27:52 UTC 2022 on sn-devel-184

commit f03abaec2abbd22b9dc83ce4a103b1b3a2912d96
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Tue Jan 18 19:44:54 2022 +0100

    s3:winbindd: Do not set ADS_AUTH_ALLOW_NTLMSSP in FIPS mode
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit fcf225a356abb06d1205f66eb79f707c85803cb5
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Tue Jan 18 19:47:38 2022 +0100

    s3:winbindd: Remove trailing spaces from winbindd_ads.c
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 9624e60e8c32de695661ae8f0fb5f8f9d836ab95
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Tue Jan 4 12:00:20 2022 +0100

    s4:selftest: plan test suite samba4.blackbox.test_weak_disable_ntlmssp_ldap
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit eb0fa26dce77829995505f542af02e32df088cd6
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Mon Jan 3 15:33:46 2022 +0100

    tests: Add test for disabling NTLMSSP for ldap client connections
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 17ea2ccdabbe935ef571e1227908d51b755707bc
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Mon Jan 3 11:13:06 2022 +0100

    s3:libads: Disable NTLMSSP if not allowed (for builds without kerberos)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 5f6251abf2f468b3744a96376b0e1c3bc317c738
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Fri Jan 7 10:31:19 2022 +0100

    s3:libads: Improve debug messages for SASL bind
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 7785eb9b78066f6f7ee2541cf72d80fcf7411329
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Thu Dec 9 13:43:08 2021 +0100

    s3:libads: Disable NTLMSSP for FIPS
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 49d18f2d6e8872c2b0cbe2bf3324e7057c8438f4
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Wed Dec 8 16:05:17 2021 +0100

    s3:libads: Remove trailing spaces from sasl.c
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit afcdb090769f6f0f66428cd29f88b0283c6bd527
Author: Pavel Filipenský <pfili...@redhat.com>
Date:   Fri Dec 10 16:08:04 2021 +0100

    s3:utils: set ads->auth.flags using krb5_state
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14955
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    
    Signed-off-by: Pavel Filipenský <pfili...@redhat.com>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 6843bdae306292a781636b4d295ed8d04ae59e07
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Jan 21 17:06:15 2022 +0100

    wafsamba: Add our own implmentation to generate the clangdb
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit 85dbc023c300a651e7802b9ebb1f08b4c2f56e8b
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Jan 21 17:05:57 2022 +0100

    wafsamba: Remove clangdb code which doesn't work
    
    This generates an incomplete database where defines and includes are 
missing.
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

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

Summary of changes:
 buildtools/wafsamba/samba_deps.py                  | 60 ++++++++++++++++++----
 buildtools/wafsamba/samba_utils.py                 |  3 +-
 source3/libads/sasl.c                              | 58 +++++++++++++--------
 source3/libnet/libnet_join.c                       | 18 ++++++-
 source3/utils/net_ads.c                            | 22 +++++++-
 source3/winbindd/winbindd_ads.c                    | 57 ++++++++++++--------
 source4/selftest/tests.py                          |  1 +
 ...crypto.sh => test_weak_disable_ntlmssp_ldap.sh} | 30 ++++-------
 wscript_build_embedded_heimdal                     |  3 +-
 wscript_build_system_heimdal                       |  3 +-
 wscript_build_system_mitkrb5                       |  3 +-
 11 files changed, 176 insertions(+), 82 deletions(-)
 copy testprogs/blackbox/{test_weak_crypto.sh => 
test_weak_disable_ntlmssp_ldap.sh} (52%)


Changeset truncated at 500 lines:

diff --git a/buildtools/wafsamba/samba_deps.py 
b/buildtools/wafsamba/samba_deps.py
index 81979e291a7..9c922f7e036 100644
--- a/buildtools/wafsamba/samba_deps.py
+++ b/buildtools/wafsamba/samba_deps.py
@@ -2,7 +2,7 @@
 
 import os, sys, re
 
-from waflib import Build, Options, Logs, Utils, Errors, Scripting
+from waflib import Build, Options, Logs, Utils, Errors, Task
 from waflib.Logs import debug
 from waflib.Configure import conf
 from waflib import ConfigSet
@@ -1164,13 +1164,56 @@ def load_samba_deps(bld, tgt_list):
     return True
 
 
+def generate_clangdb(bld):
+    classes = []
+    for x in ('c', 'cxx'):
+        cls = Task.classes.get(x)
+        if cls:
+            classes.append(cls)
+    task_classes = tuple(classes)
+
+    tasks = []
+    for g in bld.groups:
+        for tg in g:
+            if isinstance(tg, Task.Task):
+                lst = [tg]
+            else:
+                lst = tg.tasks
+            for task in lst:
+                try:
+                    cmd = task.last_cmd
+                except AttributeError:
+                    continue
+                if isinstance(task, task_classes):
+                    tasks.append(task)
+    if len(tasks) == 0:
+        return
+
+    database_file = bld.bldnode.make_node('compile_commands.json')
+    Logs.info('Build commands will be stored in %s',
+              database_file.path_from(bld.path))
+    try:
+        root = database_file.read_json()
+    except IOError:
+        root = []
+    clang_db = dict((x['file'], x) for x in root)
+    for task in tasks:
+        f_node = task.inputs[0]
+        cmd = task.last_cmd
+        filename = f_node.path_from(task.get_cwd())
+        entry = {
+            "directory": task.get_cwd().abspath(),
+            "arguments": cmd,
+            "file": filename,
+        }
+        clang_db[filename] = entry
+    root = list(clang_db.values())
+    database_file.write_json(root)
+
 
 def check_project_rules(bld):
     '''check the project rules - ensuring the targets are sane'''
 
-    if bld.__class__.__name__ == "ClangDbContext":
-        return
-
     loops = {}
     inc_loops = {}
 
@@ -1255,12 +1298,9 @@ def check_project_rules(bld):
 
     Logs.info("Project rules pass")
 
-    timer = Utils.Timer()
-
-    bld.load('clang_compilation_database')
-    Scripting.run_command('clangdb')
-
-    debug("deps: clang_compilation_database: %s" % str(timer))
+    if bld.cmd == 'build':
+        Task.Task.keep_last_cmd = True
+        bld.add_post_fun(generate_clangdb)
 
 
 def CHECK_PROJECT_RULES(bld):
diff --git a/buildtools/wafsamba/samba_utils.py 
b/buildtools/wafsamba/samba_utils.py
index 863e9d5ba22..45047e18ada 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -465,8 +465,7 @@ def RECURSE(ctx, directory):
                     'CleanContext',
                     'InstallContext',
                     'UninstallContext',
-                    'ListContext',
-                    'ClangDbContext']:
+                    'ListContext']:
         return ctx.recurse(relpath)
     if 'waflib.extras.compat15' in sys.modules:
         return ctx.recurse(relpath)
diff --git a/source3/libads/sasl.c b/source3/libads/sasl.c
index 60fa2bf80cb..1bcfe0490a8 100644
--- a/source3/libads/sasl.c
+++ b/source3/libads/sasl.c
@@ -1,18 +1,18 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    ads sasl code
    Copyright (C) Andrew Tridgell 2001
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -117,7 +117,7 @@ static const struct ads_saslwrap_ops ads_sasl_gensec_ops = {
        .disconnect     = ads_sasl_gensec_disconnect
 };
 
-/* 
+/*
    perform a LDAP/SASL/SPNEGO/{NTLMSSP,KRB5} bind (just how many layers can
    we fit on one socket??)
 */
@@ -496,7 +496,7 @@ static ADS_STATUS ads_generate_service_principal(ADS_STRUCT 
*ads,
 
 #endif /* HAVE_KRB5 */
 
-/* 
+/*
    this performs a SASL/SPNEGO bind
 */
 static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
@@ -529,7 +529,7 @@ static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
        file_save("sasl_spnego.dat", blob.data, blob.length);
 #endif
 
-       /* the server sent us the first part of the SPNEGO exchange in the 
negprot 
+       /* the server sent us the first part of the SPNEGO exchange in the 
negprot
           reply */
        if (!spnego_parse_negTokenInit(talloc_tos(), blob, OIDs, 
&given_principal, NULL) ||
                        OIDs[0] == NULL) {
@@ -557,7 +557,7 @@ static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
 
 #ifdef HAVE_KRB5
        if (!(ads->auth.flags & ADS_AUTH_DISABLE_KERBEROS) &&
-           got_kerberos_mechanism) 
+           got_kerberos_mechanism)
        {
                mech = "KRB5";
 
@@ -578,7 +578,7 @@ static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
                                  "calling kinit\n", ads_errstr(status)));
                }
 
-               status = ADS_ERROR_KRB5(ads_kinit_password(ads)); 
+               status = ADS_ERROR_KRB5(ads_kinit_password(ads));
 
                if (ADS_ERR_OK(status)) {
                        status = ads_sasl_spnego_gensec_bind(ads, "GSS-SPNEGO",
@@ -586,36 +586,50 @@ static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
                                                        p.service, p.hostname,
                                                        blob);
                        if (!ADS_ERR_OK(status)) {
-                               DEBUG(0,("kinit succeeded but "
-                                       "ads_sasl_spnego_gensec_bind(KRB5) 
failed "
-                                       "for %s/%s with user[%s] realm[%s]: 
%s\n",
+                               DBG_ERR("kinit succeeded but "
+                                       "SPNEGO bind with Kerberos failed "
+                                       "for %s/%s - user[%s], realm[%s]: %s\n",
                                        p.service, p.hostname,
                                        ads->auth.user_name,
                                        ads->auth.realm,
-                                       ads_errstr(status)));
+                                       ads_errstr(status));
                        }
                }
 
                /* only fallback to NTLMSSP if allowed */
-               if (ADS_ERR_OK(status) || 
+               if (ADS_ERR_OK(status) ||
                    !(ads->auth.flags & ADS_AUTH_ALLOW_NTLMSSP)) {
                        goto done;
                }
 
-               DEBUG(1,("ads_sasl_spnego_gensec_bind(KRB5) failed "
-                        "for %s/%s with user[%s] realm[%s]: %s, "
-                        "fallback to NTLMSSP\n",
-                        p.service, p.hostname,
-                        ads->auth.user_name,
-                        ads->auth.realm,
-                        ads_errstr(status)));
+               DBG_WARNING("SASL bind with Kerberos failed "
+                           "for %s/%s - user[%s], realm[%s]: %s, "
+                           "try to fallback to NTLMSSP\n",
+                           p.service, p.hostname,
+                           ads->auth.user_name,
+                           ads->auth.realm,
+                           ads_errstr(status));
        }
 #endif
 
        /* lets do NTLMSSP ... this has the big advantage that we don't need
-          to sync clocks, and we don't rely on special versions of the krb5 
+          to sync clocks, and we don't rely on special versions of the krb5
           library for HMAC_MD4 encryption */
        mech = "NTLMSSP";
+
+       if (!(ads->auth.flags & ADS_AUTH_ALLOW_NTLMSSP)) {
+               DBG_WARNING("We can't use NTLMSSP, it is not allowed.\n");
+               status = ADS_ERROR_NT(NT_STATUS_NETWORK_CREDENTIAL_CONFLICT);
+               goto done;
+       }
+
+       if (lp_weak_crypto() == SAMBA_WEAK_CRYPTO_DISALLOWED) {
+               DBG_WARNING("We can't fallback to NTLMSSP, weak crypto is"
+                           " disallowed.\n");
+               status = ADS_ERROR_NT(NT_STATUS_NETWORK_CREDENTIAL_CONFLICT);
+               goto done;
+       }
+
        status = ads_sasl_spnego_gensec_bind(ads, "GSS-SPNEGO",
                                             CRED_USE_KERBEROS_DISABLED,
                                             p.service, p.hostname,
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index 00d71b97f2a..5069e7546ef 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -139,6 +139,7 @@ static ADS_STATUS libnet_connect_ads(const char 
*dns_domain_name,
        ADS_STATUS status;
        ADS_STRUCT *my_ads = NULL;
        char *cp;
+       enum credentials_use_kerberos krb5_state;
 
        my_ads = ads_init(dns_domain_name,
                          netbios_domain_name,
@@ -148,7 +149,22 @@ static ADS_STATUS libnet_connect_ads(const char 
*dns_domain_name,
                return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
        }
 
-       my_ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+       /* In FIPS mode, client use kerberos is forced to required. */
+       krb5_state = lp_client_use_kerberos();
+       switch (krb5_state) {
+       case CRED_USE_KERBEROS_REQUIRED:
+               my_ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               my_ads->auth.flags &= ~ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DESIRED:
+               my_ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               my_ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DISABLED:
+               my_ads->auth.flags |= ADS_AUTH_DISABLE_KERBEROS;
+               my_ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       }
 
        if (user_name) {
                SAFE_FREE(my_ads->auth.user_name);
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 2a793139be0..d1fc3289184 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -601,6 +601,8 @@ static ADS_STATUS ads_startup_int(struct net_context *c, 
bool only_own_domain,
        char *cp;
        const char *realm = NULL;
        bool tried_closest_dc = false;
+       enum credentials_use_kerberos krb5_state =
+               CRED_USE_KERBEROS_DISABLED;
 
        /* lp_realm() should be handled by a command line param,
           However, the join requires that realm be set in smb.conf
@@ -644,10 +646,28 @@ retry:
                ads->auth.password = smb_xstrdup(c->opt_password);
        }
 
-       ads->auth.flags |= auth_flags;
        SAFE_FREE(ads->auth.user_name);
        ads->auth.user_name = smb_xstrdup(c->opt_user_name);
 
+       ads->auth.flags |= auth_flags;
+
+       /* The ADS code will handle FIPS mode */
+       krb5_state = cli_credentials_get_kerberos_state(c->creds);
+       switch (krb5_state) {
+       case CRED_USE_KERBEROS_REQUIRED:
+               ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags &= ~ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DESIRED:
+               ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DISABLED:
+               ads->auth.flags |= ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       }
+
        /*
         * If the username is of the form "name@realm",
         * extract the realm and convert to upper case.
diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c
index 948c903f165..6f01ef6e334 100644
--- a/source3/winbindd/winbindd_ads.c
+++ b/source3/winbindd/winbindd_ads.c
@@ -34,6 +34,7 @@
 #include "../libds/common/flag_mapping.h"
 #include "libsmb/samlogon_cache.h"
 #include "passdb.h"
+#include "auth/credentials/credentials.h"
 
 #ifdef HAVE_ADS
 
@@ -102,6 +103,7 @@ static ADS_STATUS ads_cached_connection_connect(ADS_STRUCT 
**adsp,
        ADS_STATUS status;
        struct sockaddr_storage dc_ss;
        fstring dc_name;
+       enum credentials_use_kerberos krb5_state;
 
        if (auth_realm == NULL) {
                return ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
@@ -125,7 +127,22 @@ static ADS_STATUS ads_cached_connection_connect(ADS_STRUCT 
**adsp,
        ads->auth.renewable = renewable;
        ads->auth.password = password;
 
-       ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+       /* In FIPS mode, client use kerberos is forced to required. */
+       krb5_state = lp_client_use_kerberos();
+       switch (krb5_state) {
+       case CRED_USE_KERBEROS_REQUIRED:
+               ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags &= ~ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DESIRED:
+               ads->auth.flags &= ~ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       case CRED_USE_KERBEROS_DISABLED:
+               ads->auth.flags |= ADS_AUTH_DISABLE_KERBEROS;
+               ads->auth.flags |= ADS_AUTH_ALLOW_NTLMSSP;
+               break;
+       }
 
        ads->auth.realm = SMB_STRDUP(auth_realm);
        if (!strupper_m(ads->auth.realm)) {
@@ -326,7 +343,7 @@ static NTSTATUS query_user_list(struct winbindd_domain 
*domain,
 
        if ( !winbindd_can_contact_domain( domain ) ) {
                DEBUG(10,("query_user_list: No incoming trust for domain %s\n",
-                         domain->name));               
+                         domain->name));
                return NT_STATUS_OK;
        }
 
@@ -432,7 +449,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain 
*domain,
 
        if ( !winbindd_can_contact_domain( domain ) ) {
                DEBUG(10,("enum_dom_groups: No incoming trust for domain %s\n",
-                         domain->name));               
+                         domain->name));
                return NT_STATUS_OK;
        }
 
@@ -447,7 +464,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain 
*domain,
         * According to Section 5.1(4) of RFC 2251 if a value of a type is it's
         * default value, it MUST be absent. In case of extensible matching the
         * "dnattr" boolean defaults to FALSE and so it must be only be present
-        * when set to TRUE. 
+        * when set to TRUE.
         *
         * When it is set to FALSE and the OpenLDAP lib (correctly) encodes a
         * filter using bitwise matching rule then the buggy AD fails to decode
@@ -458,9 +475,9 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain 
*domain,
         *
         * Thanks to Ralf Haferkamp for input and testing - Guenther */
 
-       filter = talloc_asprintf(mem_ctx, 
"(&(objectCategory=group)(&(groupType:dn:%s:=%d)(!(groupType:dn:%s:=%d))))", 
+       filter = talloc_asprintf(mem_ctx, 
"(&(objectCategory=group)(&(groupType:dn:%s:=%d)(!(groupType:dn:%s:=%d))))",
                                 ADS_LDAP_MATCHING_RULE_BIT_AND, 
GROUP_TYPE_SECURITY_ENABLED,
-                                ADS_LDAP_MATCHING_RULE_BIT_AND, 
+                                ADS_LDAP_MATCHING_RULE_BIT_AND,
                                 enum_dom_local_groups ? 
GROUP_TYPE_BUILTIN_LOCAL_GROUP : GROUP_TYPE_RESOURCE_GROUP);
 
        if (filter == NULL) {
@@ -529,7 +546,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain 
*domain,
        DEBUG(3,("ads enum_dom_groups gave %d entries\n", (*num_entries)));
 
 done:
-       if (res) 
+       if (res)
                ads_msgfree(ads, res);
 
        return status;
@@ -542,12 +559,12 @@ static NTSTATUS enum_local_groups(struct winbindd_domain 
*domain,
                                struct wb_acct_info **info)
 {
        /*
-        * This is a stub function only as we returned the domain 
+        * This is a stub function only as we returned the domain
         * local groups in enum_dom_groups() if the domain->native field
         * was true.  This is a simple performance optimization when
         * using LDAP.
         *
-        * if we ever need to enumerate domain local groups separately, 
+        * if we ever need to enumerate domain local groups separately,
         * then this optimization in enum_dom_groups() will need
         * to be split out
         */
@@ -601,7 +618,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain 
*domain,
    tokenGroups are not available. */
 static NTSTATUS lookup_usergroups_member(struct winbindd_domain *domain,
                                         TALLOC_CTX *mem_ctx,
-                                        const char *user_dn, 
+                                        const char *user_dn,
                                         struct dom_sid *primary_group,
                                         uint32_t *p_num_groups, struct dom_sid 
**user_sids)
 {
@@ -620,7 +637,7 @@ static NTSTATUS lookup_usergroups_member(struct 
winbindd_domain *domain,
 
        if ( !winbindd_can_contact_domain( domain ) ) {
                DEBUG(10,("lookup_usergroups_members: No incoming trust for 
domain %s\n",
-                         domain->name));               
+                         domain->name));
                return NT_STATUS_OK;
        }
 
@@ -702,7 +719,7 @@ static NTSTATUS lookup_usergroups_member(struct 
winbindd_domain *domain,
 
        DEBUG(3,("ads lookup_usergroups (member) succeeded for dn=%s\n", 
user_dn));
 done:
-       if (res) 
+       if (res)
                ads_msgfree(ads, res);
 
        return status;
@@ -883,14 +900,14 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain 
*domain,
        if (count != 1) {
                status = NT_STATUS_UNSUCCESSFUL;
                DEBUG(1,("lookup_usergroups(sid=%s) ads_search tokenGroups: "
-                        "invalid number of results (count=%d)\n", 
+                        "invalid number of results (count=%d)\n",
                         dom_sid_str_buf(sid, &buf),
                         count));
                goto done;
        }
 
        if (!msg) {
-               DEBUG(1,("lookup_usergroups(sid=%s) ads_search tokenGroups: 
NULL msg\n", 
+               DEBUG(1,("lookup_usergroups(sid=%s) ads_search tokenGroups: 
NULL msg\n",
                         dom_sid_str_buf(sid, &buf)));
                status = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -903,7 +920,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain 
*domain,
        }
 
        if (!ads_pull_uint32(ads, msg, "primaryGroupID", &primary_group_rid)) {
-               DEBUG(1,("%s: No primary group for sid=%s !?\n", 
+               DEBUG(1,("%s: No primary group for sid=%s !?\n",
                         domain->name,
                         dom_sid_str_buf(sid, &buf)));
                goto done;
@@ -913,7 +930,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain 
*domain,
 
        count = ads_pull_sids(ads, mem_ctx, msg, "tokenGroups", &sids);
 
-       /* there must always be at least one group in the token, 
+       /* there must always be at least one group in the token,
           unless we are talking to a buggy Win2k server */
 
        /* actually this only happens when the machine account has no read
@@ -937,7 +954,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain 
*domain,
                /* lookup what groups this user is a member of by DN search on
                 * "member" */
 
-               status = lookup_usergroups_member(domain, mem_ctx, user_dn, 
+               status = lookup_usergroups_member(domain, mem_ctx, user_dn,
                                                  &primary_group,
                                                  &num_groups, user_sids);
                *p_num_groups = num_groups;
@@ -1302,7 +1319,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain 
*domain,
                        DEBUG(10, ("lookup_groupmem: lsa_lookup_sids could "
                                   "not map any SIDs at all.\n"));
                        /* Don't handle this as an error here.


-- 
Samba Shared Repository

Reply via email to