[SCM] Samba Shared Repository - branch v3-6-test updated

Günther Deschner gd at samba.org
Mon Sep 20 11:48:20 MDT 2010


The branch, v3-6-test has been updated
       via  b9064cb s3-spoolss: allow a short printername w/o servername.
       via  8a82225 s3-selftest: rename printer "print4" to "lp".
       via  8a5647e s4-smbtorture: add spoolss_OpenPrinter with unc and printername in RPC-SPOOLSS-PRINTSERVER.
      from  1125b29 s4-smbtorture: fix winreg querymultiplevalues NDR test warning.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit b9064cbe861e8e726403d2ed976b34fa246ad8ad
Author: Günther Deschner <gd at samba.org>
Date:   Thu Sep 2 13:19:02 2010 +0200

    s3-spoolss: allow a short printername w/o servername.
    
    Verified with RPC-SPOOLSS-PRINTSERVER-enumprinters_old test.
    
    Guenther
    (cherry picked from commit 26ea51c7ab59f54f0b88f1367a0982404b9be18b)

commit 8a82225464b8b4c841709057036c069f9adc8f46
Author: Günther Deschner <gd at samba.org>
Date:   Thu Sep 2 13:39:12 2010 +0200

    s3-selftest: rename printer "print4" to "lp".
    
    This should trigger a false error condition in our code.
    
    Guenther
    (cherry picked from commit 9962462278e250f4ad2aa068bb6afb8015270e81)

commit 8a5647e9de1d25c9ff0866e9d836e68fe9338898
Author: Günther Deschner <gd at samba.org>
Date:   Fri Sep 10 00:16:30 2010 +0200

    s4-smbtorture: add spoolss_OpenPrinter with unc and printername in RPC-SPOOLSS-PRINTSERVER.
    
    Guenther
    (cherry picked from commit cf76cf02995f6050fc71066366810b355d26d4b9)

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

Summary of changes:
 selftest/target/Samba3.pm           |    2 +-
 source3/rpc_server/srv_spoolss_nt.c |    7 +------
 source3/script/tests/selftest.sh    |    2 +-
 source4/torture/rpc/spoolss.c       |   22 ++++++++++++++++++----
 4 files changed, 21 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 3c64e8d..39057ec 100644
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -584,7 +584,7 @@ sub provision($$$$$$)
 	copy = print1
 [print3]
 	copy = print1
-[print4]
+[lp]
 	copy = print1
 [print\$]
 	copy = tmp
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 03b8a60..59c2e78 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -421,13 +421,8 @@ static bool set_printer_hnd_printertype(Printer_entry *Printer, const char *hand
 {
 	DEBUG(3,("Setting printer type=%s\n", handlename));
 
-	if ( strlen(handlename) < 3 ) {
-		DEBUGADD(4,("A print server must have at least 1 char ! %s\n", handlename));
-		return false;
-	}
-
 	/* it's a print server */
-	if (*handlename=='\\' && *(handlename+1)=='\\' && !strchr_m(handlename+2, '\\')) {
+	if (handlename && *handlename=='\\' && *(handlename+1)=='\\' && !strchr_m(handlename+2, '\\')) {
 		DEBUGADD(4,("Printer is a print server\n"));
 		Printer->printer_type = SPLHND_SERVER;
 	}
diff --git a/source3/script/tests/selftest.sh b/source3/script/tests/selftest.sh
index 6a74a89..5059cea 100755
--- a/source3/script/tests/selftest.sh
+++ b/source3/script/tests/selftest.sh
@@ -369,7 +369,7 @@ cat >$SERVERCONFFILE<<EOF
 	copy = print1
 [print3]
 	copy = print1
-[print4]
+[lp]
 	copy = print1
 [print$]
 	copy = tmp
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index a444c84..25c410a 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -5645,7 +5645,8 @@ static bool test_OpenPrinter_badname_list(struct torture_context *tctx,
 static bool test_OpenPrinter(struct torture_context *tctx,
 			     struct dcerpc_pipe *p,
 			     const char *name,
-			     const char *environment)
+			     const char *environment,
+			     bool open_only)
 {
 	NTSTATUS status;
 	struct spoolss_OpenPrinter r;
@@ -5653,7 +5654,7 @@ static bool test_OpenPrinter(struct torture_context *tctx,
 	bool ret = true;
 	struct dcerpc_binding_handle *b = p->binding_handle;
 
-	r.in.printername	= talloc_asprintf(tctx, "\\\\%s\\%s", dcerpc_server_name(p), name);
+	r.in.printername	= name;
 	r.in.datatype		= NULL;
 	r.in.devmode_ctr.devmode= NULL;
 	r.in.access_mask	= SEC_FLAG_MAXIMUM_ALLOWED;
@@ -5667,6 +5668,10 @@ static bool test_OpenPrinter(struct torture_context *tctx,
 
 	torture_assert_werr_ok(tctx, r.out.result, "OpenPrinter failed");
 
+	if (open_only) {
+		goto close_printer;
+	}
+
 	if (!test_GetPrinter(tctx, b, &handle, environment)) {
 		ret = false;
 	}
@@ -5677,6 +5682,7 @@ static bool test_OpenPrinter(struct torture_context *tctx,
 		}
 	}
 
+ close_printer:
 	if (!test_ClosePrinter(tctx, b, &handle)) {
 		ret = false;
 	}
@@ -5965,7 +5971,7 @@ static bool test_EnumPrinters_old(struct torture_context *tctx,
 		for (j=0;j<count;j++) {
 			if (r.in.level == 1) {
 				char *unc = talloc_strdup(tctx, info[j].info1.name);
-				char *slash, *name;
+				char *slash, *name, *full_name;
 				name = unc;
 				if (unc[0] == '\\' && unc[1] == '\\') {
 					unc +=2;
@@ -5975,7 +5981,15 @@ static bool test_EnumPrinters_old(struct torture_context *tctx,
 					slash++;
 					name = slash;
 				}
-				if (!test_OpenPrinter(tctx, p, name, ctx->environment)) {
+				full_name = talloc_asprintf(tctx, "\\\\%s\\%s",
+							    dcerpc_server_name(p), name);
+				if (!test_OpenPrinter(tctx, p, name, ctx->environment, true)) {
+					ret = false;
+				}
+				if (!test_OpenPrinter(tctx, p, full_name, ctx->environment, true)) {
+					ret = false;
+				}
+				if (!test_OpenPrinter(tctx, p, name, ctx->environment, false)) {
 					ret = false;
 				}
 				if (!test_OpenPrinterEx(tctx, p, name, ctx->environment)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list