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

Günther Deschner gd at samba.org
Wed Dec 22 06:35:39 MST 2010


The branch, v3-6-test has been updated
       via  f1414d5 s3-printing: fix crash bug in print_spool_open().
       via  dc30e4b s3-spoolss: handle NTTIME(0) as "01/01/1601" REG_SZ in driver dates.
       via  d5c2f4b s4-smbtorture: always skip addprinter{ex} level 1 tests for now.
       via  04fb3c0 s4-smbtorture: fix expected driver date REG_SZ string.
       via  36394d3 s4-smbtorture: check the returned driver date is equal to the one we passed in.
       via  3e119eb s4-smbtorture: add torture_assert_nttime_equal macro.
       via  ac45b20 s4-smbtorture: interesting, DriverDate and DriverVersion are different in w2k3 and w2k8r2.
      from  6bfbf5f s4-smbtorture: run the winreg tests also against an added driver.

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


- Log -----------------------------------------------------------------
commit f1414d5890df616a66796c7f9194f46b36558f57
Author: Günther Deschner <gd at samba.org>
Date:   Wed Dec 22 11:34:22 2010 +0100

    s3-printing: fix crash bug in print_spool_open().
    
    Guenther
    
    Autobuild-User: Günther Deschner <gd at samba.org>
    Autobuild-Date: Wed Dec 22 14:21:58 CET 2010 on sn-devel-104
    (cherry picked from commit 94e83e385e5ba66f1415164214f7afd5e4ad7536)

commit dc30e4b167b05180c3c3ccbd01aac05c98aef9cd
Author: Günther Deschner <gd at samba.org>
Date:   Wed Dec 22 11:32:24 2010 +0100

    s3-spoolss: handle NTTIME(0) as "01/01/1601" REG_SZ in driver dates.
    
    Guenther
    (cherry picked from commit d0e164458d33228f74b41023b11f234837cc9668)

commit d5c2f4b6e78b39a4b742348abb4d175eab5d8970
Author: Günther Deschner <gd at samba.org>
Date:   Wed Dec 22 11:30:51 2010 +0100

    s4-smbtorture: always skip addprinter{ex} level 1 tests for now.
    
    Guenther
    (cherry picked from commit a204c45e59c35a9c5bfcd85a96d99bc12d727d07)

commit 04fb3c0af2f27cd1092747a0a5cf9751c1ea2d9e
Author: Günther Deschner <gd at samba.org>
Date:   Tue Dec 21 17:00:33 2010 +0100

    s4-smbtorture: fix expected driver date REG_SZ string.
    
    This resolves the "WARNING!: ../torture/rpc/spoolss.c:4688: str was 01/01/1601,
    expected 01/01/1970: "DriverDate" - driver_date mismatch" warnings.
    
    Guenther
    (cherry picked from commit 9626487a14c8dfd23f8743cb85a2bc12cf454887)

commit 36394d3867f112f0c66e9e79ee4a73c5e54ffaa3
Author: Günther Deschner <gd at samba.org>
Date:   Tue Dec 21 16:14:48 2010 +0100

    s4-smbtorture: check the returned driver date is equal to the one we passed in.
    
    Guenther
    (cherry picked from commit 3931d4aa65aa6edf75c6593e43d74441168ed299)

commit 3e119eb9d27e40d348e9d88b83f5d6d8c275b8b2
Author: Günther Deschner <gd at samba.org>
Date:   Tue Dec 21 16:14:20 2010 +0100

    s4-smbtorture: add torture_assert_nttime_equal macro.
    
    Guenther
    (cherry picked from commit 2e2cb8d96d786c0c9f1b45f41f0758ee07bebf4c)

commit ac45b2051226e94cd7b4b06792afbf6a7d654600
Author: Günther Deschner <gd at samba.org>
Date:   Mon Dec 20 16:02:02 2010 +0100

    s4-smbtorture: interesting, DriverDate and DriverVersion are different in w2k3 and w2k8r2.
    
    While in w2k8 they are REG_SZ date or numerical strings, they are 8 byte REG_BINARY blobs in w2k3.
    
    Guenther
    (cherry picked from commit 340d2df123813196247d3b1aff38048cfe93c1ec)

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

Summary of changes:
 lib/torture/torture.h                 |    8 +++++-
 source3/printing/printspoolss.c       |    4 ++-
 source3/rpc_server/srv_spoolss_util.c |   17 +++++++++---
 source4/torture/rpc/spoolss.c         |   46 ++++++++++++++++++++++++++++----
 4 files changed, 63 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/torture/torture.h b/lib/torture/torture.h
index 39f83df..00de5e8 100644
--- a/lib/torture/torture.h
+++ b/lib/torture/torture.h
@@ -450,7 +450,13 @@ void torture_result(struct torture_context *test,
 	} \
 	} while(0)
 
-
+#define torture_assert_nttime_equal(torture_ctx,got,expected,cmt) \
+	do { NTTIME __got = got, __expected = expected; \
+	if (!nt_time_equal(&__got, &__expected)) { \
+		torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", nt_time_string(tctx, __got), nt_time_string(tctx, __expected), cmt); \
+		return false; \
+	}\
+	} while(0)
 
 #define torture_skip(torture_ctx,cmt) do {\
 		torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\
diff --git a/source3/printing/printspoolss.c b/source3/printing/printspoolss.c
index 8426b84..8effb6e 100644
--- a/source3/printing/printspoolss.c
+++ b/source3/printing/printspoolss.c
@@ -208,7 +208,9 @@ done:
 	if (!NT_STATUS_IS_OK(status)) {
 		if (fd != -1) {
 			close(fd);
-			unlink(fsp->print_file->filename);
+			if (fsp->print_file) {
+				unlink(fsp->print_file->filename);
+			}
 		}
 		/* We need to delete the job from spoolss too */
 		if (pf->jobid) {
diff --git a/source3/rpc_server/srv_spoolss_util.c b/source3/rpc_server/srv_spoolss_util.c
index 7145676..1825033 100644
--- a/source3/rpc_server/srv_spoolss_util.c
+++ b/source3/rpc_server/srv_spoolss_util.c
@@ -1219,10 +1219,14 @@ static WERROR winreg_printer_write_date(TALLOC_CTX *mem_ctx,
 	struct tm *tm;
 	time_t t;
 
-	t = nt_time_to_unix(data);
-	tm = localtime(&t);
-	str = talloc_asprintf(mem_ctx, "%02d/%02d/%04d",
-			      tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900);
+	if (data == 0) {
+		str = talloc_strdup(mem_ctx, "01/01/1601");
+	} else {
+		t = nt_time_to_unix(data);
+		tm = localtime(&t);
+		str = talloc_asprintf(mem_ctx, "%02d/%02d/%04d",
+				      tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900);
+	}
 	if (!str) {
 		return WERR_NOMEM;
 	}
@@ -1255,6 +1259,11 @@ static WERROR winreg_printer_date_to_NTTIME(const char *str, NTTIME *data)
 	struct tm tm;
 	time_t t;
 
+	if (strequal(str, "01/01/1601")) {
+		*data = 0;
+		return WERR_OK;
+	}
+
 	ZERO_STRUCT(tm);
 
 	if (sscanf(str, "%d/%d/%d",
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 630694d..6ff2414 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -4369,6 +4369,23 @@ do {\
 		talloc_asprintf(tctx, "%s - %s mismatch", #wname, #iname));\
 } while(0);
 
+#define test_binary(wname, iname) \
+do {\
+	enum winreg_Type w_type;\
+	uint32_t w_size;\
+	uint32_t w_length;\
+	uint8_t *w_data;\
+	torture_assert(tctx,\
+		test_winreg_QueryValue(tctx, winreg_handle, &key_handle, wname,\
+				       &w_type, &w_size, &w_length, &w_data),\
+		"failed to query winreg");\
+	torture_assert_int_equal(tctx, w_type, REG_BINARY, "unexpected type");\
+	torture_assert_int_equal(tctx, w_size, iname.length, "unexpected length");\
+	torture_assert_mem_equal(tctx, w_data, iname.data, w_size, \
+		"binary unequal");\
+} while(0);
+
+
 #define test_dm(wname, iname) \
 do {\
 	DATA_BLOB blob;\
@@ -4575,6 +4592,11 @@ static const char *driver_winreg_date(TALLOC_CTX *mem_ctx, NTTIME nt)
 {
 	time_t t;
 	struct tm *tm;
+
+	if (nt == 0) {
+		return talloc_strdup(mem_ctx, "01/01/1601");
+	}
+
 	t = nt_time_to_unix(nt);
 	tm = localtime(&t);
 
@@ -4717,8 +4739,14 @@ static bool test_GetDriverInfo_winreg(struct torture_context *tctx,
 	test_sz("Data File",			data_file);
 	test_sz("Datatype",			info.info6.default_datatype);
 	test_sz("Driver",			driver_path);
-	test_sz("DriverDate",			driver_date);
-	test_sz("DriverVersion",		driver_version);
+	if (torture_setting_bool(tctx, "w2k3", false)) {
+		DATA_BLOB blob = data_blob_talloc_zero(tctx, 8);
+		test_binary("DriverDate",	blob);
+		test_binary("DriverVersion",	blob);
+	} else {
+		test_sz("DriverDate",		driver_date);
+		test_sz("DriverVersion",	driver_version);
+	}
 	test_sz("HardwareID",			info.info6.hardware_id);
 	test_sz("Help File",			help_file);
 	test_sz("Manufacturer",			info.info6.manufacturer_name);
@@ -7525,8 +7553,9 @@ static bool torture_rpc_spoolss_printerwkn_setup(struct torture_context *tctx, v
 	t->info2.printername	= TORTURE_WELLKNOWN_PRINTER;
 	t->devmode		= NULL;
 
-	if (t->wellknown && torture_setting_bool(tctx, "samba3", false)) {
-		torture_skip(tctx, "skipping AddPrinter level 1 against samba");
+	/* FIXME */
+	if (t->wellknown) {
+		torture_skip(tctx, "skipping AddPrinter level 1");
 	}
 
 	return torture_rpc_spoolss_printer_setup_common(tctx, t);
@@ -7543,8 +7572,9 @@ static bool torture_rpc_spoolss_printerexwkn_setup(struct torture_context *tctx,
 	t->info2.printername	= TORTURE_WELLKNOWN_PRINTER_EX;
 	t->devmode		= NULL;
 
-	if (t->wellknown && torture_setting_bool(tctx, "samba3", false)) {
-		torture_skip(tctx, "skipping AddPrinter level 1 against samba");
+	/* FIXME */
+	if (t->wellknown) {
+		torture_skip(tctx, "skipping AddPrinterEx level 1");
 	}
 
 	return torture_rpc_spoolss_printer_setup_common(tctx, t);
@@ -8421,6 +8451,8 @@ static bool test_AddPrinterDriver_args_level_6(struct torture_context *tctx,
 		}
 	}
 
+	torture_assert_nttime_equal(tctx, info.info6.driver_date, info6.driver_date, "driverdate mismatch");
+
 	return true;
 }
 
@@ -8469,6 +8501,8 @@ static bool test_AddPrinterDriver_args_level_8(struct torture_context *tctx,
 		}
 	}
 
+	torture_assert_nttime_equal(tctx, info.info8.driver_date, r->driver_date, "driverdate mismatch");
+
 	return true;
 }
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list