[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Tue Jan 12 04:13:16 MST 2010


The branch, master has been updated
       via  0ae4cc8... testprogs: remove unused test_EachDriver from spoolss test.
       via  3c1b517... testprogs: add EnumPrinterKey test to spoolss test.
       via  13dad38... s4-smbtorture: fix GetAliasMembership test in RPC-SAMR.
      from  a744dbc... s4-smbtorture: add RPC-SAMR-PASSWORDS-BADPWDCOUNT torture test.

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


- Log -----------------------------------------------------------------
commit 0ae4cc839d435bb974b456c9c0f91bf545e181f2
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jan 11 15:40:37 2010 +0100

    testprogs: remove unused test_EachDriver from spoolss test.
    
    Guenther

commit 3c1b51795dcf6b6e85701a49ea9d862b9ae610bd
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jan 11 15:40:16 2010 +0100

    testprogs: add EnumPrinterKey test to spoolss test.
    
    Guenther

commit 13dad3893085dfe2fc01f88b3bb46a0645ab22fb
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jan 11 12:40:01 2010 +0100

    s4-smbtorture: fix GetAliasMembership test in RPC-SAMR.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/samr.c               |   10 +++--
 testprogs/win32/spoolss/error.c          |    4 ++
 testprogs/win32/spoolss/printlib.c       |   14 ++++++
 testprogs/win32/spoolss/printlib_proto.h |    1 +
 testprogs/win32/spoolss/spoolss.c        |   67 +++++++++++++++++++-----------
 5 files changed, 68 insertions(+), 28 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index 20d4803..8b466e8 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -2639,11 +2639,13 @@ static bool test_GetAliasMembership(struct dcerpc_pipe *p,
 	/* only true for w2k8 it seems
 	 * win7, xp, w2k3 will return a 0 length array pointer */
 
-	torture_assert(tctx, (rids.ids && !rids.count),
-		"samr_GetAliasMembership protocol misbehaviour");
+	if (rids.ids && (rids.count == 0)) {
+		torture_fail(tctx, "samr_GetAliasMembership returned 0 count and a rids array");
+	}
 #endif
-	torture_assert(tctx, (!rids.ids && rids.count),
-		"samr_GetAliasMembership protocol misbehaviour");
+	if (!rids.ids && rids.count) {
+		torture_fail(tctx, "samr_GetAliasMembership returned non-0 count but no rids");
+	}
 
 	return true;
 }
diff --git a/testprogs/win32/spoolss/error.c b/testprogs/win32/spoolss/error.c
index ba15c1e..6296f07 100644
--- a/testprogs/win32/spoolss/error.c
+++ b/testprogs/win32/spoolss/error.c
@@ -31,6 +31,8 @@ const char *errstr(DWORD error)
 		return "ERROR_ACCESS_DENIED";
 	case ERROR_INVALID_PARAMETER:
 		return "ERROR_INVALID_PARAMETER";
+	case ERROR_INVALID_HANDLE:
+		return "ERROR_INVALID_HANDLE";
 	case ERROR_CALL_NOT_IMPLEMENTED:
 		return "ERROR_CALL_NOT_IMPLEMENTED";
 	case ERROR_INSUFFICIENT_BUFFER:
@@ -109,6 +111,8 @@ const char *errstr(DWORD error)
 #endif
 	case ERROR_CANCELLED:
 		return "ERROR_CANCELLED";
+	case RPC_S_SERVER_UNAVAILABLE:
+		return "RPC_S_SERVER_UNAVAILABLE";
 	default:
 		break;
 	}
diff --git a/testprogs/win32/spoolss/printlib.c b/testprogs/win32/spoolss/printlib.c
index c40ca6c..9fc9d04 100644
--- a/testprogs/win32/spoolss/printlib.c
+++ b/testprogs/win32/spoolss/printlib.c
@@ -606,3 +606,17 @@ void print_printer_enum_values(PRINTER_ENUM_VALUES *info)
 
 	return;
 }
+
+void print_printer_keys(LPSTR buffer)
+{
+	LPSTR p = NULL;
+
+	p = buffer;
+
+	while (p && *p) {
+		printf("%s\n", p);
+		for (; *p; p = CharNext(p)) {
+			p = CharNext(p);
+		}
+	}
+}
diff --git a/testprogs/win32/spoolss/printlib_proto.h b/testprogs/win32/spoolss/printlib_proto.h
index fd6db22..d408523 100644
--- a/testprogs/win32/spoolss/printlib_proto.h
+++ b/testprogs/win32/spoolss/printlib_proto.h
@@ -39,6 +39,7 @@ void print_driver_info_4 (PDRIVER_INFO_4 info);
 void print_driver_info_6 (PDRIVER_INFO_6 info);
 void print_doc_info_1 (PDOC_INFO_1 info);
 void print_printer_enum_values (PRINTER_ENUM_VALUES *info);
+void print_printer_keys(LPSTR buffer);
 #undef _PRINTF_ATTRIBUTE
 #define _PRINTF_ATTRIBUTE(a1, a2)
 
diff --git a/testprogs/win32/spoolss/spoolss.c b/testprogs/win32/spoolss/spoolss.c
index 5c77413..d68ca89 100644
--- a/testprogs/win32/spoolss/spoolss.c
+++ b/testprogs/win32/spoolss/spoolss.c
@@ -403,6 +403,42 @@ static BOOL test_EnumPrintProcessorDatatypes(struct torture_context *tctx,
 /****************************************************************************
 ****************************************************************************/
 
+static BOOL test_EnumPrinterKey(struct torture_context *tctx,
+				LPSTR servername,
+				HANDLE handle,
+				LPCSTR key)
+{
+	LPSTR buffer = NULL;
+	DWORD needed = 0;
+	DWORD err = 0;
+	char tmp[1024];
+
+	torture_comment(tctx, "Testing EnumPrinterKey(%s)", key);
+
+	err = EnumPrinterKey(handle, key, NULL, 0, &needed);
+	if (err == ERROR_MORE_DATA) {
+		buffer = (LPTSTR)malloc(needed);
+		torture_assert(tctx, buffer, "malloc failed");
+		err = EnumPrinterKey(handle, key, buffer, needed, &needed);
+	}
+	if (err) {
+		sprintf(tmp, "EnumPrinterKey(%s) failed on [%s] (buffer size = %d), error: %s\n",
+			key, servername, needed, errstr(err));
+		torture_fail(tctx, tmp);
+	}
+
+	if (tctx->print) {
+		print_printer_keys(buffer);
+	}
+
+	free(buffer);
+
+	return TRUE;
+}
+
+/****************************************************************************
+****************************************************************************/
+
 static BOOL test_GetPrinter(struct torture_context *tctx,
 			    LPSTR printername,
 			    HANDLE handle)
@@ -561,6 +597,8 @@ static BOOL test_OnePrinter(struct torture_context *tctx,
 	ret &= test_GetPrinterDriver(tctx, printername, architecture, handle);
 	ret &= test_EnumForms(tctx, printername, handle);
 	ret &= test_EnumJobs(tctx, printername, handle);
+	ret &= test_EnumPrinterKey(tctx, printername, handle, "");
+	ret &= test_EnumPrinterKey(tctx, printername, handle, "PrinterDriverData");
 	ret &= test_ClosePrinter(tctx, handle);
 
 	return ret;
@@ -569,25 +607,6 @@ static BOOL test_OnePrinter(struct torture_context *tctx,
 /****************************************************************************
 ****************************************************************************/
 
-static BOOL test_OneDriver(struct torture_context *tctx,
-			   LPSTR printername,
-			   LPSTR drivername)
-{
-	return TRUE;
-}
-
-/****************************************************************************
-****************************************************************************/
-
-static BOOL test_EachDriver(struct torture_context *tctx,
-			    LPSTR servername)
-{
-	return TRUE;
-}
-
-/****************************************************************************
-****************************************************************************/
-
 static BOOL test_EachPrinter(struct torture_context *tctx,
 			     LPSTR servername,
 			     LPSTR architecture)
@@ -731,7 +750,7 @@ int main(int argc, char *argv[])
 	BOOL ret = FALSE;
 	LPSTR servername;
 	LPSTR architecture = "Windows NT x86";
-	HANDLE handle;
+	HANDLE server_handle;
 	struct torture_context *tctx;
 
 	if (argc < 2) {
@@ -756,9 +775,10 @@ int main(int argc, char *argv[])
 
 	ret &= test_EnumPrinters(tctx, servername);
 	ret &= test_EnumDrivers(tctx, servername, architecture);
-	ret &= test_OpenPrinter(tctx, servername, &handle);
-	ret &= test_EnumForms(tctx, servername, handle);
-	ret &= test_ClosePrinter(tctx, handle);
+	ret &= test_OpenPrinter(tctx, servername, &server_handle);
+/*	ret &= test_EnumPrinterKey(tctx, servername, server_handle, ""); */
+	ret &= test_EnumForms(tctx, servername, server_handle);
+	ret &= test_ClosePrinter(tctx, server_handle);
 	ret &= test_EnumPorts(tctx, servername);
 	ret &= test_EnumMonitors(tctx, servername);
 	ret &= test_EnumPrintProcessors(tctx, servername, architecture);
@@ -766,7 +786,6 @@ int main(int argc, char *argv[])
 	ret &= test_GetPrintProcessorDirectory(tctx, servername, architecture);
 	ret &= test_GetPrinterDriverDirectory(tctx, servername, architecture);
 	ret &= test_EachPrinter(tctx, servername, architecture);
-	ret &= test_EachDriver(tctx, servername);
 
 	if (!ret) {
 		if (tctx->last_reason) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list