auth:creds: Introduce CRED_SMB_CONF
authorStefan Metzmacher <metze@samba.org>
Wed, 6 Nov 2019 16:37:45 +0000 (17:37 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 19 Aug 2020 16:22:40 +0000 (16:22 +0000)
We have several places where we check '> CRED_UNINITIALISED',
so we better don't use CRED_UNINITIALISED for values from
our smb.conf.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
auth/credentials/credentials.c
auth/credentials/credentials.h
auth/credentials/pycredentials.c
python/samba/tests/credentials.py

index 81f9dbb9eb3a6aafb70bf1c69bd80f0280e26899..80a31b248ae7905725bfe9324378d45b58826ed1 100644 (file)
@@ -902,12 +902,12 @@ _PUBLIC_ void cli_credentials_set_conf(struct cli_credentials *cred,
        if (lpcfg_parm_is_cmdline(lp_ctx, "workgroup")) {
                cli_credentials_set_domain(cred, lpcfg_workgroup(lp_ctx), CRED_SPECIFIED);
        } else {
-               cli_credentials_set_domain(cred, lpcfg_workgroup(lp_ctx), CRED_UNINITIALISED);
+               cli_credentials_set_domain(cred, lpcfg_workgroup(lp_ctx), CRED_SMB_CONF);
        }
        if (lpcfg_parm_is_cmdline(lp_ctx, "netbios name")) {
                cli_credentials_set_workstation(cred, lpcfg_netbios_name(lp_ctx), CRED_SPECIFIED);
        } else {
-               cli_credentials_set_workstation(cred, lpcfg_netbios_name(lp_ctx), CRED_UNINITIALISED);
+               cli_credentials_set_workstation(cred, lpcfg_netbios_name(lp_ctx), CRED_SMB_CONF);
        }
        if (realm != NULL && strlen(realm) == 0) {
                realm = NULL;
@@ -915,7 +915,7 @@ _PUBLIC_ void cli_credentials_set_conf(struct cli_credentials *cred,
        if (lpcfg_parm_is_cmdline(lp_ctx, "realm")) {
                cli_credentials_set_realm(cred, realm, CRED_SPECIFIED);
        } else {
-               cli_credentials_set_realm(cred, realm, CRED_UNINITIALISED);
+               cli_credentials_set_realm(cred, realm, CRED_SMB_CONF);
        }
 
        sep = lpcfg_winbind_separator(lp_ctx);
index c2a17fef445b6446b50ca5bd73075cbd22d2118e..9fc511d838930b196d936127a8e8bafd60eba204 100644 (file)
@@ -42,6 +42,7 @@ struct db_context;
 /* In order of priority */
 enum credentials_obtained { 
        CRED_UNINITIALISED = 0,  /* We don't even have a guess yet */
+       CRED_SMB_CONF,           /* Current value should be used, which comes from smb.conf */
        CRED_CALLBACK,           /* Callback should be used to obtain value */
        CRED_GUESS_ENV,          /* Current value should be used, which was guessed */
        CRED_GUESS_FILE,         /* A guess from a file (or file pointed at in env variable) */
index a5d0f9e051cc4ffd81c2d12ecf52684d3a6dd0f1..68edc2827411452480ed35ecab0569cbe70d27be 100644 (file)
@@ -1275,6 +1275,7 @@ MODULE_INIT_FUNC(credentials)
                return NULL;
 
        PyModule_AddObject(m, "UNINITIALISED", PyLong_FromLong(CRED_UNINITIALISED));
+       PyModule_AddObject(m, "SMB_CONF", PyLong_FromLong(CRED_SMB_CONF));
        PyModule_AddObject(m, "CALLBACK", PyLong_FromLong(CRED_CALLBACK));
        PyModule_AddObject(m, "GUESS_ENV", PyLong_FromLong(CRED_GUESS_ENV));
        PyModule_AddObject(m, "GUESS_FILE", PyLong_FromLong(CRED_GUESS_FILE));
index 3df99ee783f232a6001b06ffececca4b92b8935a..3dac57651a3aea30b3801e8ded1cda9bb90ca241 100644 (file)
@@ -324,7 +324,7 @@ class CredentialsTests(samba.tests.TestCaseInTempDir):
         os.environ["USER"] = "env_user"
         creds.guess(lp)
         realm = "realm.example.com"
-        creds.set_realm(realm, credentials.UNINITIALISED)
+        creds.set_realm(realm, credentials.SMB_CONF)
         creds.parse_string("user")
         self.assertEqual(creds.get_username(), "user")
         self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
@@ -352,7 +352,7 @@ class CredentialsTests(samba.tests.TestCaseInTempDir):
         os.environ["USER"] = "env_user"
         creds.guess(lp)
         realm = "realm.example.com"
-        creds.set_realm(realm, credentials.UNINITIALISED)
+        creds.set_realm(realm, credentials.SMB_CONF)
         self.assertEqual(creds.get_username(), "env_user")
         self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
         self.assertEqual(creds.get_realm(), realm.upper())