[SCM] Samba Shared Repository - branch v4-19-test updated

Jule Anger janger at samba.org
Tue Dec 12 10:02:01 UTC 2023


The branch, v4-19-test has been updated
       via  1b6096a1dff s3:utils: Fix auth callback with smburl
       via  37e24c60d82 s3:tests: Add interactive smbget test for password entry
       via  88c297575b6 auth:creds: Add cli_credentials_get_domain_and_obtained()
       via  ec913897169 auth:creds: Fix cli_credentials_get_password_and_obtained() with callback
       via  259cc2b51d5 auth:creds:tests: Add test for password callback
       via  8dc5d522774 s3:tests: Fix smbget test
       via  b2e427b48c4 s3:tests: Remove the non-working test_kerberos_upn_denied of smbget
       via  9fe9f02cb3b s3:tests: Fix the test_kerberos_trust in smbget testsuite
       via  fd20e3223df s3:tests: Fix test_kerberos in smbget tests
       via  e6d14a8560a s3:tests: Pass down a normal domain user for test_smbget.sh
       via  4fca26641b1 selftest: Add DOMAIN_ADMIN and DOMAIN_USER variables
       via  3738e0a904a selftest: Remove trailing tabs/white spaces in Samba4.pm
       via  7998197398a s3:tests: Fix authentication with smbget_user in smbget tests
       via  63969fe9ade s3:utils: Fix setting the debug level
       via  402042b5483 s3:tests: Add smbget test for smb://DOAMIN;user%password@server/share/file
      from  b2d450cc697 smbd: Fix read_symlink_reparse()

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-19-test


- Log -----------------------------------------------------------------
commit 1b6096a1dff7e9ba67fa0e5a0932959f0f3ae0b6
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 13:16:53 2023 +0100

    s3:utils: Fix auth callback with smburl
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit f2f7ed419e03e5ae8cc85f42af5b2bcf91abefe2)
    
    Autobuild-User(v4-19-test): Jule Anger <janger at samba.org>
    Autobuild-Date(v4-19-test): Tue Dec 12 10:01:36 UTC 2023 on atb-devel-224

commit 37e24c60d82a5e20faf919a504b9cf9cd54764bc
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 15:58:08 2023 +0100

    s3:tests: Add interactive smbget test for password entry
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 5b38f3be8cb986aa2db3aab5c3c3d2e8739893ce)

commit 88c297575b6a4307d1f825fe2628c653411ebbb6
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 13:26:43 2023 +0100

    auth:creds: Add cli_credentials_get_domain_and_obtained()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit a7622bc7db093558c6f6e3da4d2a899a764dec09)

commit ec913897169c168097af7b7d840e3f013498cdb9
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 13:06:42 2023 +0100

    auth:creds: Fix cli_credentials_get_password_and_obtained() with callback
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 1041dae03f0f7e9e2b6b4a649eb1d298a34ce699)

commit 259cc2b51d51351e1d6b1116cbd91999577c7b5c
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 13:16:26 2023 +0100

    auth:creds:tests: Add test for password callback
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit ab4b25964a43a1ef550f10580ad395e178fe647e)

commit 8dc5d52277497e5582136c267b3fde850c9bb8e7
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 09:47:14 2023 +0100

    s3:tests: Fix smbget test
    
    Time to fix the smget share to not have `guest ok = yes` set. A new
    [smbget_guest] will be used for guest only tests. This way we can
    correctly test different authentication mechanisms.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit c46769f3f10d21ed802e17aa79ae17e345168e63)

commit b2e427b48c46e589b2f14da3bb0fc8032d482858
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 13:11:46 2023 +0100

    s3:tests: Remove the non-working test_kerberos_upn_denied of smbget
    
    See TODO code comment for details.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 1a04fd255c2c94e01bda9840bfd6b372007bb3c7)

commit 9fe9f02cb3bc7d6215d66fcb1800d6b904f41d4a
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 11:43:33 2023 +0100

    s3:tests: Fix the test_kerberos_trust in smbget testsuite
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 468fb05d6357779228e411076e286abcdb70cf96)

commit fd20e3223dfade64125b59da0c0613c0f58335ce
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 10:51:32 2023 +0100

    s3:tests: Fix test_kerberos in smbget tests
    
    We switched to a temporary directory, so $PREFIX doesn't exist.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 62b0b79ce065246417996dec61afa6a10f6ab99b)

commit e6d14a8560a9d94fa4bf958d079261e332a964a9
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 09:45:54 2023 +0100

    s3:tests: Pass down a normal domain user for test_smbget.sh
    
    It is better to test with a normal user than administrator.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 337034e675aaeb366d360a791ec0d003426230af)

commit 4fca26641b1165c10f34effe35fafb3f3b2b7539
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Dec 8 13:07:19 2023 +0100

    selftest: Add DOMAIN_ADMIN and DOMAIN_USER variables
    
    We should start using those in future. So we can distinguish which
    privileges we want. Currently DC_USERNAME is the Administrator. Whatever
    possible should use DOMIAN_USER instead.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 56d0c3a0263ed166452c129219e7a391ba4d014c)

commit 3738e0a904ad165c4962b9b180b51a886acdedc6
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Dec 8 13:06:27 2023 +0100

    selftest: Remove trailing tabs/white spaces in Samba4.pm
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit a2af6946f5e53b7d954aa54d3d115dbe4975b1c4)

commit 7998197398ab7e07485217a9e3895f6da4262c01
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Dec 7 09:18:26 2023 +0100

    s3:tests: Fix authentication with smbget_user in smbget tests
    
    Currently the smget share is broken. We set `guest ok = yes` so if you
    specify invalid names, the authentication will still succeed as we
    are mapped to guest.
    
    The smbget_user is a local ad_member user. We need to set the
    workstation as the "domain" for the user.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit c14c5dec09fe1c86b29b3091ad521e73a2e1c3e9)

commit 63969fe9ade06d0cd878a6e01fc1a41d0c88f988
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 6 08:48:34 2023 +0100

    s3:utils: Fix setting the debug level
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15525
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 763b2efe69dc74e1c0cd954607031012f832486d)

commit 402042b54838b7abdbb45cef3b52191206f20f55
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Dec 5 15:46:48 2023 +0100

    s3:tests: Add smbget test for smb://DOAMIN;user%password@server/share/file
    
    This is supported according to the smbget manpage!
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15525
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit e5fe856e76eba26e3b85a391bcea02dfe045c26e)

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

Summary of changes:
 auth/credentials/credentials.c      |  26 +++++-
 auth/credentials/credentials.h      |   3 +
 auth/credentials/tests/test_creds.c |  38 +++++++++
 selftest/target/Samba.pm            |   4 +
 selftest/target/Samba3.pm           |  28 ++++++
 selftest/target/Samba4.pm           |  16 +++-
 source3/script/tests/test_smbget.sh | 164 +++++++++++++++++++++++++-----------
 source3/selftest/tests.py           |   2 +
 source3/utils/smbget.c              |  46 ++++++++--
 9 files changed, 266 insertions(+), 61 deletions(-)


Changeset truncated at 500 lines:

diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c
index 0485cc4e64e..7a00279b8b4 100644
--- a/auth/credentials/credentials.c
+++ b/auth/credentials/credentials.c
@@ -465,11 +465,13 @@ _PUBLIC_ const char *
 cli_credentials_get_password_and_obtained(struct cli_credentials *cred,
 					  enum credentials_obtained *obtained)
 {
+	const char *password = cli_credentials_get_password(cred);
+
 	if (obtained != NULL) {
 		*obtained = cred->password_obtained;
 	}
 
-	return cli_credentials_get_password(cred);
+	return password;
 }
 
 /* Set a password on the credentials context, including an indication
@@ -736,6 +738,28 @@ _PUBLIC_ const char *cli_credentials_get_domain(struct cli_credentials *cred)
 	return cred->domain;
 }
 
+/**
+ * @brief Obtain the domain for this credential context.
+ *
+ * @param[in] cred  The credential context.
+ *
+ * @param[out] obtained A pointer to store the obtained information.
+ *
+ * @return The domain name or NULL if an error occurred.
+ */
+_PUBLIC_ const char *cli_credentials_get_domain_and_obtained(
+	struct cli_credentials *cred,
+	enum credentials_obtained *obtained)
+{
+	const char *domain = cli_credentials_get_domain(cred);
+
+	if (obtained != NULL) {
+		*obtained = cred->domain_obtained;
+	}
+
+	return domain;
+}
+
 
 _PUBLIC_ bool cli_credentials_set_domain(struct cli_credentials *cred,
 				const char *val,
diff --git a/auth/credentials/credentials.h b/auth/credentials/credentials.h
index c3a048ecc8d..c5ffe536e07 100644
--- a/auth/credentials/credentials.h
+++ b/auth/credentials/credentials.h
@@ -127,6 +127,9 @@ int cli_credentials_get_keytab(struct cli_credentials *cred,
 			       struct loadparm_context *lp_ctx,
 			       struct keytab_container **_ktc);
 const char *cli_credentials_get_domain(struct cli_credentials *cred);
+const char *cli_credentials_get_domain_and_obtained(
+	struct cli_credentials *cred,
+	enum credentials_obtained *obtained);
 struct netlogon_creds_CredentialState *cli_credentials_get_netlogon_creds(struct cli_credentials *cred);
 void cli_credentials_set_machine_account_pending(struct cli_credentials *cred,
 						 struct loadparm_context *lp_ctx);
diff --git a/auth/credentials/tests/test_creds.c b/auth/credentials/tests/test_creds.c
index a2f9642bfe0..2cb2e6d0e34 100644
--- a/auth/credentials/tests/test_creds.c
+++ b/auth/credentials/tests/test_creds.c
@@ -48,6 +48,7 @@ static void torture_creds_init(void **state)
 	const char *username = NULL;
 	const char *domain = NULL;
 	const char *password = NULL;
+	enum credentials_obtained dom_obtained = CRED_UNINITIALISED;
 	enum credentials_obtained usr_obtained = CRED_UNINITIALISED;
 	enum credentials_obtained pwd_obtained = CRED_UNINITIALISED;
 	bool ok;
@@ -65,6 +66,11 @@ static void torture_creds_init(void **state)
 	domain = cli_credentials_get_domain(creds);
 	assert_string_equal(domain, "WURST");
 
+	domain = cli_credentials_get_domain_and_obtained(creds,
+							 &dom_obtained);
+	assert_int_equal(dom_obtained, CRED_SPECIFIED);
+	assert_string_equal(domain, "WURST");
+
 	username = cli_credentials_get_username(creds);
 	assert_null(username);
 	ok = cli_credentials_set_username(creds, "brot", CRED_SPECIFIED);
@@ -285,6 +291,37 @@ static void torture_creds_gensec_feature(void **state)
 	assert_int_equal(creds->gensec_features, GENSEC_FEATURE_SIGN);
 }
 
+static const char *torture_get_password(struct cli_credentials *creds)
+{
+	return talloc_strdup(creds, "SECRET");
+}
+
+static void torture_creds_password_callback(void **state)
+{
+	TALLOC_CTX *mem_ctx = *state;
+	struct cli_credentials *creds = NULL;
+	const char *password = NULL;
+	enum credentials_obtained pwd_obtained = CRED_UNINITIALISED;
+	bool ok;
+
+	creds = cli_credentials_init(mem_ctx);
+	assert_non_null(creds);
+
+	ok = cli_credentials_set_domain(creds, "WURST", CRED_SPECIFIED);
+	assert_true(ok);
+	ok = cli_credentials_set_username(creds, "brot", CRED_SPECIFIED);
+	assert_true(ok);
+
+	ok = cli_credentials_set_password_callback(creds, torture_get_password);
+	assert_true(ok);
+	assert_int_equal(creds->password_obtained, CRED_CALLBACK);
+
+	password = cli_credentials_get_password_and_obtained(creds,
+							     &pwd_obtained);
+	assert_int_equal(pwd_obtained, CRED_CALLBACK_RESULT);
+	assert_string_equal(password, "SECRET");
+}
+
 int main(int argc, char *argv[])
 {
 	int rc;
@@ -296,6 +333,7 @@ int main(int argc, char *argv[])
 		cmocka_unit_test(torture_creds_parse_string),
 		cmocka_unit_test(torture_creds_krb5_state),
 		cmocka_unit_test(torture_creds_gensec_feature),
+		cmocka_unit_test(torture_creds_password_callback)
 	};
 
 	if (argc == 2) {
diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
index b959db493ca..e4bd6a0d5d2 100644
--- a/selftest/target/Samba.pm
+++ b/selftest/target/Samba.pm
@@ -947,6 +947,10 @@ my @exported_envvars = (
 	"PASSWORD",
 	"DC_USERNAME",
 	"DC_PASSWORD",
+	"DOMAIN_ADMIN",
+	"DOMAIN_ADMIN_PASSWORD",
+	"DOMAIN_USER",
+	"DOMAIN_USER_PASSWORD",
 
 	# UID/GID for rfc2307 mapping tests
 	"UID_RFC2307TEST",
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 85e69e4b72d..2c69993c56a 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1006,6 +1006,10 @@ sub provision_ad_member
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	# forest trust
 	$ret->{TRUST_F_BOTH_SERVER} = $trustvars_f->{SERVER};
@@ -1171,6 +1175,10 @@ sub setup_ad_member_rfc2307
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	return $ret;
 }
@@ -1267,6 +1275,10 @@ sub setup_admem_idmap_autorid
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	return $ret;
 }
@@ -1366,6 +1378,10 @@ sub setup_ad_member_idmap_rid
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	return $ret;
 }
@@ -1466,6 +1482,10 @@ sub setup_ad_member_idmap_ad
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	$ret->{TRUST_SERVER} = $dcvars->{TRUST_SERVER};
 	$ret->{TRUST_USERNAME} = $dcvars->{TRUST_USERNAME};
@@ -1558,6 +1578,10 @@ sub setup_ad_member_oneway
 	$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
 	$ret->{DC_USERNAME} = $dcvars->{USERNAME};
 	$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
+	$ret->{DOMAIN_ADMIN} = $dcvars->{DOMAIN_ADMIN};
+	$ret->{DOMAIN_ADMIN_PASSWORD} = $dcvars->{DOMAIN_ADMIN_PASSWORD};
+	$ret->{DOMAIN_USER} = $dcvars->{DOMAIN_USER};
+	$ret->{DOMAIN_USER_PASSWORD} = $dcvars->{DOMAIN_USER_PASSWORD};
 
 	$ret->{TRUST_SERVER} = $dcvars->{TRUST_SERVER};
 	$ret->{TRUST_USERNAME} = $dcvars->{TRUST_USERNAME};
@@ -3563,6 +3587,10 @@ sub provision($$)
 [smbget]
 	path = $smbget_sharedir
 	comment = smb username is [%U]
+
+[smbget_guest]
+	path = $smbget_sharedir
+	comment = smb username is [%U]
 	guest ok = yes
 
 include = $aliceconfdir/%U.conf
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index a10c1313322..cbaacce48da 100755
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -559,7 +559,7 @@ sub provision_raw_prepare($$$$$$$$$$$$$$)
 		warn("Unable to clean up");
 	}
 
-	
+
 	my $swiface = Samba::get_interface($hostname);
 
 	$ctx->{prefix} = $prefix;
@@ -587,6 +587,10 @@ sub provision_raw_prepare($$$$$$$$$$$$$$)
 	$ctx->{realm} = uc($realm);
 	$ctx->{dnsname} = lc($realm);
 	$ctx->{samsid} = $samsid;
+	$ctx->{domain_admin} = "Administrator";
+	$ctx->{domain_admin_password} = $password;
+	$ctx->{domain_user} = "alice";
+	$ctx->{domain_user_password} = "Secret007";
 
 	$ctx->{functional_level} = $functional_level;
 
@@ -906,6 +910,10 @@ nogroup:x:65534:nobody
 		DOMAIN => $ctx->{domain},
 		USERNAME => $ctx->{username},
 		DC_USERNAME => $ctx->{username},
+		DOMAIN_ADMIN => $ctx->{domain_admin},
+		DOMAIN_ADMIN_PASSWORD => $ctx->{domain_admin_password},
+		DOMAIN_USER => $ctx->{domain_user},
+		DOMAIN_USER_PASSWORD => $ctx->{domain_user_password},
 		REALM => $ctx->{realm},
 		DNSNAME => $ctx->{dnsname},
 		SAMSID => $ctx->{samsid},
@@ -1034,7 +1042,7 @@ replace: userPrincipalName
 userPrincipalName: testallowed upn\@$ctx->{realm}
 replace: servicePrincipalName
 servicePrincipalName: host/testallowed
--	    
+-
 ";
 	close($ldif);
 	unless ($? == 0) {
@@ -1057,7 +1065,7 @@ servicePrincipalName: host/testallowed
 changetype: modify
 replace: userPrincipalName
 userPrincipalName: testdenied_upn\@$ctx->{realm}.upn
--	    
+-
 ";
 	close($ldif);
 	unless ($? == 0) {
@@ -2225,7 +2233,7 @@ sub provision_chgdcpass($$)
 		warn("Unable to add wins configuration");
 		return undef;
 	}
-	
+
 	# Remove secrets.tdb from this environment to test that we
 	# still start up on systems without the new matching
 	# secrets.tdb records.
diff --git a/source3/script/tests/test_smbget.sh b/source3/script/tests/test_smbget.sh
index 46c1f4a68a5..74050f6951a 100755
--- a/source3/script/tests/test_smbget.sh
+++ b/source3/script/tests/test_smbget.sh
@@ -16,9 +16,11 @@ DOMAIN=${3}
 REALM=${4}
 USERNAME=${5}
 PASSWORD=${6}
-WORKDIR=${7}
-SMBGET="$VALGRIND ${8}"
-shift 8
+DOMAIN_USER=${7}
+DOMAIN_USER_PASSWORD=${8}
+WORKDIR=${9}
+SMBGET="$VALGRIND ${10}"
+shift 10
 
 TMPDIR="$SELFTEST_TMPDIR"
 
@@ -27,6 +29,7 @@ incdir=$(dirname $0)/../../../testprogs/blackbox
 . "${incdir}/common_test_fns.inc"
 
 samba_kinit=$(system_or_builddir_binary kinit "${BINDIR}" samba4kinit)
+samba_texpect="${BINDIR}/texpect"
 
 create_test_data()
 {
@@ -55,8 +58,8 @@ clear_download_area()
 test_singlefile_guest()
 {
 	clear_download_area
-	echo "$SMBGET --verbose --guest smb://$SERVER_IP/smbget/testfile"
-	$SMBGET --verbose --guest smb://$SERVER_IP/smbget/testfile
+	echo "$SMBGET --verbose --guest smb://$SERVER_IP/smbget_guest/testfile"
+	$SMBGET --verbose --guest smb://$SERVER_IP/smbget_guest/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -72,7 +75,7 @@ test_singlefile_guest()
 test_singlefile_U()
 {
 	clear_download_area
-	$SMBGET --verbose -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -89,7 +92,7 @@ test_singlefile_U_UPN()
 {
 	clear_download_area
 
-	${SMBGET} --verbose -U"${DC_USERNAME}@${REALM}%${DC_PASSWORD}" \
+	${SMBGET} --verbose -U"${DOMAIN_USER}@${REALM}%${DOMAIN_USER_PASSWORD}" \
 		"smb://${SERVER_IP}/smbget/testfile"
 	ret=${?}
 	if [ ${ret} -ne 0 ]; then
@@ -111,7 +114,7 @@ test_singlefile_U_domain()
 {
 	clear_download_area
 
-	${SMBGET} --verbose -U"${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}" \
+	${SMBGET} --verbose -U"${DOMAIN}/${DOMAIN_USER}%${DOMAIN_USER_PASSWORD}" \
 		"smb://${SERVER_IP}/smbget/testfile"
 	ret=${?}
 	if [ ${ret} -ne 0 ]; then
@@ -132,7 +135,7 @@ test_singlefile_U_domain()
 test_singlefile_smburl()
 {
 	clear_download_area
-	$SMBGET --workgroup $DOMAIN smb://$USERNAME:$PASSWORD@$SERVER_IP/smbget/testfile
+	$SMBGET --workgroup $DOMAIN smb://${DOMAIN_USER}:$DOMAIN_USER_PASSWORD@$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -145,11 +148,54 @@ test_singlefile_smburl()
 	return 0
 }
 
+test_singlefile_smburl2()
+{
+	clear_download_area
+	$SMBGET "smb://$DOMAIN;${DOMAIN_USER}:$DOMAIN_USER_PASSWORD@$SERVER_IP/smbget/testfile"
+	if [ $? -ne 0 ]; then
+		echo 'ERROR: RC does not match, expected: 0'
+		return 1
+	fi
+	cmp --silent $WORKDIR/testfile ./testfile
+	if [ $? -ne 0 ]; then
+		echo 'ERROR: file content does not match'
+		return 1
+	fi
+	return 0
+}
+
+test_singlefile_smburl_interactive()
+{
+	clear_download_area
+
+	tmpfile="$(mktemp --tmpdir="${TMPDIR}" expect_XXXXXXXXXX)"
+
+	cat >"${tmpfile}" <<EOF
+expect Password for
+send ${DOMAIN_USER_PASSWORD}\n
+EOF
+
+	USER="hanswurst" ${samba_texpect} "${tmpfile}" ${SMBGET} "smb://${DOMAIN};${DOMAIN_USER}@${SERVER_IP}/smbget/testfile"
+	ret=$?
+	rm -f "${tmpfile}"
+	if [ ${ret} -ne 0 ]; then
+		echo 'ERROR: RC does not match, expected: 0'
+		return 1
+	fi
+	cmp --silent $WORKDIR/testfile ./testfile
+	ret=$?
+	if [ ${ret} -ne 0 ]; then
+		echo 'ERROR: file content does not match'
+		return 1
+	fi
+	return 0
+}
+
 test_singlefile_authfile()
 {
 	clear_download_area
 	cat >"${TMPDIR}/authfile" << EOF
-username = $USERNAME
+username = ${SERVER}/${USERNAME}
 password = $PASSWORD
 EOF
 	$SMBGET --verbose --authentication-file="${TMPDIR}/authfile" smb://$SERVER_IP/smbget/testfile
@@ -170,7 +216,7 @@ EOF
 test_recursive_U()
 {
 	clear_download_area
-	$SMBGET --verbose --recursive -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/
+	$SMBGET --verbose --recursive -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -191,7 +237,7 @@ test_recursive_existing_dir()
 {
 	clear_download_area
 	mkdir dir1
-	$SMBGET --verbose --recursive -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/
+	$SMBGET --verbose --recursive -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -214,7 +260,7 @@ test_recursive_with_empty()
 	# create some additional empty directories
 	mkdir -p $WORKDIR/dir001/dir002/dir003
 	mkdir -p $WORKDIR/dir004/dir005/dir006
-	$SMBGET --verbose --recursive -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/
+	$SMBGET --verbose --recursive -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/
 	rc=$?
 	rm -rf $WORKDIR/dir001
 	rm -rf $WORKDIR/dir004
@@ -244,7 +290,7 @@ test_resume()
 	clear_download_area
 	cp $WORKDIR/testfile .
 	truncate -s 1024 testfile
-	$SMBGET --verbose --resume -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose --resume -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -263,7 +309,7 @@ test_resume_modified()
 {
 	clear_download_area
 	dd if=/dev/urandom bs=1024 count=2 of=testfile
-	$SMBGET --verbose --resume -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose --resume -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 1 ]; then
 		echo 'ERROR: RC does not match, expected: 1'
 		return 1
@@ -275,14 +321,14 @@ test_resume_modified()
 test_update()
 {
 	clear_download_area
-	$SMBGET --verbose -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
 	fi
 
 	# secondary download should pass
-	$SMBGET --verbose --update -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose --update -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -292,7 +338,7 @@ test_update()
 	# touch source to trigger new download
 	sleep 2
 	touch -m $WORKDIR/testfile
-	$SMBGET --verbose --update -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile
+	$SMBGET --verbose --update -U${SERVER}/${USERNAME}%$PASSWORD smb://$SERVER_IP/smbget/testfile
 	if [ $? -ne 0 ]; then
 		echo 'ERROR: RC does not match, expected: 0'
 		return 1
@@ -327,7 +373,7 @@ test_msdfs_link_domain()
 {
 	clear_download_area
 
-	${SMBGET} --verbose "-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}" \
+	${SMBGET} --verbose "-U${DOMAIN}/${DOMAIN_USER}%${DOMAIN_USER_PASSWORD}" \
 		"smb://${SERVER}/msdfs-share/deeppath/msdfs-src2/readable_file"
 	ret=$?
 	if [ ${ret} -ne 0 ]; then


-- 
Samba Shared Repository



More information about the samba-cvs mailing list