[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Fri Apr 23 03:44:04 MDT 2010


The branch, master has been updated
       via  ca0e5ea... s4-smbtorture: use server_name for all printerdriver delete and enum operations.
       via  698b778... s3-spoolss: make switch in _spoolss_AddPrinterDriver() a bit more clear.
       via  4be5d59... s4-smbtorture: allow to upload or remove any file belonging to a driver.
      from  c82fd3e... s3: Fix a winbind crash when scanning trusts

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


- Log -----------------------------------------------------------------
commit ca0e5ea8331857bca5207105c6bb4b6aaa8edadb
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 23 11:39:12 2010 +0200

    s4-smbtorture: use server_name for all printerdriver delete and enum operations.
    
    With this s3 passes the RPC-PRINTER-DRIVER test.
    
    Guenther

commit 698b7780c90687e9c1744e2435865dba1f18b274
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 23 11:33:51 2010 +0200

    s3-spoolss: make switch in _spoolss_AddPrinterDriver() a bit more clear.
    
    Guenther

commit 4be5d59c4f034ef9a125fe813e9e02ba5c2c833b
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 23 11:27:51 2010 +0200

    s4-smbtorture: allow to upload or remove any file belonging to a driver.
    
    Guenther

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

Summary of changes:
 source3/rpc_server/srv_spoolss_nt.c |   10 +++--
 source4/torture/rpc/spoolss.c       |   58 +++++++++++++++++++++++++++-------
 2 files changed, 52 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index e8b5f8e..28e8a7d 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -7519,11 +7519,13 @@ WERROR _spoolss_AddPrinterDriver(pipes_struct *p,
 	struct spoolss_AddPrinterDriverEx a;
 
 	switch (r->in.info_ctr->level) {
-	case 6:
-	case 8:
-		return WERR_UNKNOWN_LEVEL;
-	default:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
 		break;
+	default:
+		return WERR_UNKNOWN_LEVEL;
 	}
 
 	a.in.servername		= r->in.servername;
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 711f4df..81b63e9 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -6886,13 +6886,14 @@ static bool test_AddPrinterDriver_args_level_8(struct torture_context *tctx,
 
 static bool test_DeletePrinterDriver_exp(struct torture_context *tctx,
 					 struct dcerpc_binding_handle *b,
+					 const char *server,
 					 const char *driver,
 					 const char *environment,
 					 WERROR expected_result)
 {
 	struct spoolss_DeletePrinterDriver r;
 
-	r.in.server = NULL;
+	r.in.server = server;
 	r.in.architecture = environment;
 	r.in.driver = driver;
 
@@ -6909,6 +6910,7 @@ static bool test_DeletePrinterDriver_exp(struct torture_context *tctx,
 
 static bool test_DeletePrinterDriverEx_exp(struct torture_context *tctx,
 					   struct dcerpc_binding_handle *b,
+					   const char *server,
 					   const char *driver,
 					   const char *environment,
 					   uint32_t delete_flags,
@@ -6917,7 +6919,7 @@ static bool test_DeletePrinterDriverEx_exp(struct torture_context *tctx,
 {
 	struct spoolss_DeletePrinterDriverEx r;
 
-	r.in.server = NULL;
+	r.in.server = server;
 	r.in.architecture = environment;
 	r.in.driver = driver;
 	r.in.delete_flags = delete_flags;
@@ -6936,23 +6938,24 @@ static bool test_DeletePrinterDriverEx_exp(struct torture_context *tctx,
 
 static bool test_DeletePrinterDriver(struct torture_context *tctx,
 				     struct dcerpc_binding_handle *b,
+				     const char *server_name,
 				     const char *driver,
 				     const char *environment)
 {
 	torture_assert(tctx,
-		test_DeletePrinterDriver_exp(tctx, b, driver, "FOOBAR", WERR_INVALID_ENVIRONMENT),
+		test_DeletePrinterDriver_exp(tctx, b, server_name, driver, "FOOBAR", WERR_INVALID_ENVIRONMENT),
 		"failed to delete driver");
 
 	torture_assert(tctx,
-		test_DeletePrinterDriver_exp(tctx, b, driver, environment, WERR_OK),
+		test_DeletePrinterDriver_exp(tctx, b, server_name, driver, environment, WERR_OK),
 		"failed to delete driver");
 
-	if (test_EnumPrinterDrivers_findone(tctx, b, NULL, environment, 1, driver)) {
+	if (test_EnumPrinterDrivers_findone(tctx, b, server_name, environment, 1, driver)) {
 		torture_fail(tctx, "deleted driver still enumerated");
 	}
 
 	torture_assert(tctx,
-		test_DeletePrinterDriver_exp(tctx, b, driver, environment, WERR_UNKNOWN_PRINTER_DRIVER),
+		test_DeletePrinterDriver_exp(tctx, b, server_name, driver, environment, WERR_UNKNOWN_PRINTER_DRIVER),
 		"2nd delete failed");
 
 	return true;
@@ -6960,25 +6963,26 @@ static bool test_DeletePrinterDriver(struct torture_context *tctx,
 
 static bool test_DeletePrinterDriverEx(struct torture_context *tctx,
 				       struct dcerpc_binding_handle *b,
+				       const char *server_name,
 				       const char *driver,
 				       const char *environment,
 				       uint32_t delete_flags,
 				       uint32_t version)
 {
 	torture_assert(tctx,
-		test_DeletePrinterDriverEx_exp(tctx, b, driver, "FOOBAR", delete_flags, version, WERR_INVALID_ENVIRONMENT),
+		test_DeletePrinterDriverEx_exp(tctx, b, server_name, driver, "FOOBAR", delete_flags, version, WERR_INVALID_ENVIRONMENT),
 		"failed to delete driver");
 
 	torture_assert(tctx,
-		test_DeletePrinterDriverEx_exp(tctx, b, driver, environment, delete_flags, version, WERR_OK),
+		test_DeletePrinterDriverEx_exp(tctx, b, server_name, driver, environment, delete_flags, version, WERR_OK),
 		"failed to delete driver");
 
-	if (test_EnumPrinterDrivers_findone(tctx, b, NULL, environment, 1, driver)) {
+	if (test_EnumPrinterDrivers_findone(tctx, b, server_name, environment, 1, driver)) {
 		torture_fail(tctx, "deleted driver still enumerated");
 	}
 
 	torture_assert(tctx,
-		test_DeletePrinterDriverEx_exp(tctx, b, driver, environment, delete_flags, version, WERR_UNKNOWN_PRINTER_DRIVER),
+		test_DeletePrinterDriverEx_exp(tctx, b, server_name, driver, environment, delete_flags, version, WERR_UNKNOWN_PRINTER_DRIVER),
 		"2nd delete failed");
 
 	return true;
@@ -7034,9 +7038,9 @@ static bool test_PrinterDriver_args(struct torture_context *tctx,
 	}
 
 	if (ex) {
-		return test_DeletePrinterDriverEx(tctx, b, r->driver_name, r->architecture, delete_flags, r->version);
+		return test_DeletePrinterDriverEx(tctx, b, server_name, r->driver_name, r->architecture, delete_flags, r->version);
 	} else {
-		return test_DeletePrinterDriver(tctx, b, r->driver_name, r->architecture);
+		return test_DeletePrinterDriver(tctx, b, server_name, r->driver_name, r->architecture);
 	}
 }
 
@@ -7116,6 +7120,10 @@ static bool upload_printer_driver_file(struct torture_context *tctx,
 	const char *local_name = talloc_asprintf(tctx, "%s/%s", d->local.driver_directory, file_name);
 	const char *remote_name = talloc_asprintf(tctx, "%s\\%s", remote_dir, file_name);
 
+	if (!file_name) {
+		return true;
+	}
+
 	torture_comment(tctx, "Uploading %s to %s\n", local_name, remote_name);
 
 	fnum = smbcli_open(cli->tree, remote_name, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE);
@@ -7202,6 +7210,7 @@ static bool upload_printer_driver(struct torture_context *tctx,
 {
 	struct smbcli_state *cli;
 	const char *share_name = driver_directory_share(tctx, d->remote.driver_directory);
+	int i;
 
 	torture_assert(tctx,
 		connect_printer_driver_share(tctx, server_name, share_name, &cli),
@@ -7219,6 +7228,16 @@ static bool upload_printer_driver(struct torture_context *tctx,
 	torture_assert(tctx,
 		upload_printer_driver_file(tctx, cli, d, d->info8.config_file),
 		"failed to upload config_file");
+	torture_assert(tctx,
+		upload_printer_driver_file(tctx, cli, d, d->info8.help_file),
+		"failed to upload help_file");
+	if (d->info8.dependent_files) {
+		for (i=0; d->info8.dependent_files->string && d->info8.dependent_files->string[i] != NULL; i++) {
+			torture_assert(tctx,
+				upload_printer_driver_file(tctx, cli, d, d->info8.dependent_files->string[i]),
+				"failed to upload dependent_files");
+		}
+	}
 
 	talloc_free(cli);
 
@@ -7233,6 +7252,10 @@ static bool remove_printer_driver_file(struct torture_context *tctx,
 	const char *remote_name;
 	const char *remote_dir =  driver_directory_dir(d->remote.driver_directory);
 
+	if (!file_name) {
+		return true;
+	}
+
 	remote_name = talloc_asprintf(tctx, "%s\\%s", remote_dir, file_name);
 
 	torture_comment(tctx, "Removing %s\n", remote_name);
@@ -7250,6 +7273,7 @@ static bool remove_printer_driver(struct torture_context *tctx,
 {
 	struct smbcli_state *cli;
 	const char *share_name = driver_directory_share(tctx, d->remote.driver_directory);
+	int i;
 
 	torture_assert(tctx,
 		connect_printer_driver_share(tctx, server_name, share_name, &cli),
@@ -7267,6 +7291,16 @@ static bool remove_printer_driver(struct torture_context *tctx,
 	torture_assert(tctx,
 		remove_printer_driver_file(tctx, cli, d, d->info8.config_file),
 		"failed to remove config_file");
+	torture_assert(tctx,
+		remove_printer_driver_file(tctx, cli, d, d->info8.help_file),
+		"failed to remove help_file");
+	if (d->info8.dependent_files) {
+		for (i=0; d->info8.dependent_files->string && d->info8.dependent_files->string[i] != NULL; i++) {
+			torture_assert(tctx,
+				remove_printer_driver_file(tctx, cli, d, d->info8.dependent_files->string[i]),
+				"failed to remove dependent_files");
+		}
+	}
 
 	talloc_free(cli);
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list