[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Thu May 20 14:52:58 MDT 2010


The branch, master has been updated
       via  7c6be16... s4-smbtorture: use push_reg_sz/push_reg_multi_sz in spoolss tests.
       via  393e149... s4-smbtorture: pass down hkey to main keytest in RPC-WINREG.
       via  ff3d2be... s4-smbtorture: print local_machine name in RemoteFindFirstPrinterChangeNotifyEx test.
       via  7370d03... s4-smbtorture: use push_reg_sz()/push_reg_multi_sz() in RPC-WINREG.
      from  29f549e... s3-waf: ndr string functions moved to top level

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


- Log -----------------------------------------------------------------
commit 7c6be166d0ef799a1897c29d5c1c1cd9998ff5d3
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 22:13:48 2010 +0200

    s4-smbtorture: use push_reg_sz/push_reg_multi_sz in spoolss tests.
    
    Guenther

commit 393e1495af642af4525c7f66d869b0685731b3aa
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 20:50:31 2010 +0200

    s4-smbtorture: pass down hkey to main keytest in RPC-WINREG.
    
    Guenther

commit ff3d2bef113783a561bdba1eace41d9bd5fce337
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 21:57:53 2010 +0200

    s4-smbtorture: print local_machine name in RemoteFindFirstPrinterChangeNotifyEx test.
    
    Guenther

commit 7370d036278d2cd0cb14267b5c2b0baa6e1788eb
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 20:49:44 2010 +0200

    s4-smbtorture: use push_reg_sz()/push_reg_multi_sz() in RPC-WINREG.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/spoolss.c        |   26 +++++++--------
 source4/torture/rpc/spoolss_notify.c |    5 ++-
 source4/torture/rpc/winreg.c         |   61 ++++++++++++++++++---------------
 3 files changed, 48 insertions(+), 44 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index efe975c..d5b0f0e 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -3697,9 +3697,8 @@ static bool test_EnumPrinterData_consistency(struct torture_context *tctx,
 
 	torture_comment(tctx, "Testing EnumPrinterData vs EnumPrinterDataEx consistency\n");
 
-	torture_assert(tctx,
-		reg_string_to_val(tctx, 
-				  "REG_SZ", "torture_data1", &type, &blob), "");
+	torture_assert(tctx, push_reg_sz(tctx, &blob, "torture_data1"), "");
+	type = REG_SZ;
 
 	torture_assert(tctx,
 		test_SetPrinterData(tctx, b, handle, "torture_value1", type, blob.data, blob.length),
@@ -4590,9 +4589,8 @@ static bool test_SetPrinterData_matrix(struct torture_context *tctx,
 		uint8_t *data;
 		uint32_t needed;
 
-		torture_assert(tctx,
-			reg_string_to_val(tctx, 
-					  "REG_SZ", "dog", &type, &blob), "");
+		torture_assert(tctx, push_reg_sz(tctx, &blob, "dog"), "");
+		type = REG_SZ;
 
 		torture_assert(tctx,
 			test_SetPrinterData(tctx, b, handle, values[i], REG_SZ, blob.data, blob.length),
@@ -4717,6 +4715,7 @@ static bool test_SetPrinterDataEx_matrix(struct torture_context *tctx,
 		const char *key;
 		enum winreg_Type type;
 		const char *string = talloc_strndup(tctx, str, s);
+		const char *array[2];
 		DATA_BLOB blob = data_blob_string_const(string);
 		const char **subkeys;
 		DATA_BLOB data;
@@ -4725,6 +4724,9 @@ static bool test_SetPrinterDataEx_matrix(struct torture_context *tctx,
 		uint32_t ecount;
 		struct spoolss_PrinterEnumValues *einfo;
 
+		array[0] = talloc_strdup(tctx, string);
+		array[1] = NULL;
+
 		if (types[t] == REG_DWORD) {
 			s = 0xffff;
 		}
@@ -4747,18 +4749,14 @@ static bool test_SetPrinterDataEx_matrix(struct torture_context *tctx,
 			offered = 4;
 			break;
 		case REG_SZ:
-			torture_assert(tctx,
-				reg_string_to_val(tctx, 
-						  "REG_SZ", string, &type, &data), "");
+			torture_assert(tctx, push_reg_sz(tctx, &data, string), "");
+			type = REG_SZ;
 			offered = data.length;
 			/*strlen_m_term(data.string)*2;*/
 			break;
 		case REG_MULTI_SZ:
-			torture_assert(tctx,
-				reg_string_to_val(tctx, 
-						  "REG_SZ", string, &type, &data), "");
-			torture_assert(tctx, data_blob_realloc(tctx, &data, data.length + 2), "");
-			memset(&data.data[data.length - 2], '\0', 2);
+			torture_assert(tctx, push_reg_multi_sz(tctx, &data, array), "");
+			type = REG_MULTI_SZ;
 			offered = data.length;
 			break;
 		default:
diff --git a/source4/torture/rpc/spoolss_notify.c b/source4/torture/rpc/spoolss_notify.c
index 2dffa85..9fa6b63 100644
--- a/source4/torture/rpc/spoolss_notify.c
+++ b/source4/torture/rpc/spoolss_notify.c
@@ -330,11 +330,12 @@ static bool test_RemoteFindFirstPrinterChangeNotifyEx(struct torture_context *tc
 						      struct spoolss_NotifyOption *option)
 {
 	struct spoolss_RemoteFindFirstPrinterChangeNotifyEx r;
+	const char *local_machine = talloc_asprintf(tctx, "\\\\%s", address);
 
-	torture_comment(tctx, "Testing RemoteFindFirstPrinterChangeNotifyEx\n");
+	torture_comment(tctx, "Testing RemoteFindFirstPrinterChangeNotifyEx(%s)\n", local_machine);
 
 	r.in.flags = 0;
-	r.in.local_machine = talloc_asprintf(tctx, "\\\\%s", address);
+	r.in.local_machine = local_machine;
 	r.in.options = 0;
 	r.in.printer_local = 0;
 	r.in.notify_options = option;
diff --git a/source4/torture/rpc/winreg.c b/source4/torture/rpc/winreg.c
index 216a30c..95576e5 100644
--- a/source4/torture/rpc/winreg.c
+++ b/source4/torture/rpc/winreg.c
@@ -4,7 +4,7 @@
 
    Copyright (C) Tim Potter 2003
    Copyright (C) Jelmer Vernooij 2004-2007
-   Copyright (C) Günther Deschner 2007
+   Copyright (C) Günther Deschner 2007,2010
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -1919,6 +1919,7 @@ static bool test_SetValue_simple(struct dcerpc_binding_handle *b,
 	uint32_t value = 0x12345678;
 	uint64_t value2 = 0x12345678;
 	const char *string = "torture";
+	const char *array[2];
 	DATA_BLOB blob;
 	enum winreg_Type types[] = {
 		REG_DWORD,
@@ -1930,6 +1931,9 @@ static bool test_SetValue_simple(struct dcerpc_binding_handle *b,
 	};
 	int t;
 
+	array[0] = "array0";
+	array[1] = NULL;
+
 	torture_comment(tctx, "Testing SetValue (standard formats)\n");
 
 	for (t=0; t < ARRAY_SIZE(types); t++) {
@@ -1952,26 +1956,10 @@ static bool test_SetValue_simple(struct dcerpc_binding_handle *b,
 			blob = data_blob_string_const("binary_blob");
 			break;
 		case REG_SZ:
-			torture_assert(tctx,
-				convert_string_talloc_convenience(tctx, lp_iconv_convenience(tctx->lp_ctx),
-								  CH_UNIX, CH_UTF16,
-								  string,
-								  strlen(string)+1,
-								  (void **)&blob.data,
-								  &blob.length,
-								  false), "");
+			torture_assert(tctx, push_reg_sz(tctx, &blob, string), "failed to push REG_SZ");
 			break;
 		case REG_MULTI_SZ:
-			torture_assert(tctx,
-				convert_string_talloc_convenience(tctx, lp_iconv_convenience(tctx->lp_ctx),
-								  CH_UNIX, CH_UTF16,
-								  string,
-								  strlen(string)+1,
-								  (void **)&blob.data,
-								  &blob.length,
-								  false), "");
-			torture_assert(tctx, data_blob_realloc(tctx, &blob, blob.length + 2), "");
-			memset(&blob.data[blob.length - 2], '\0', 2);
+			torture_assert(tctx, push_reg_multi_sz(tctx, &blob, array), "failed to push REG_MULTI_SZ");
 			break;
 		default:
 			break;
@@ -2117,7 +2105,8 @@ static bool test_HKLM_wellknown(struct torture_context *tctx,
 
 static bool test_volatile_keys(struct torture_context *tctx,
 			       struct dcerpc_binding_handle *b,
-			       struct policy_handle *handle)
+			       struct policy_handle *handle,
+			       int hkey)
 {
 	struct policy_handle new_handle;
 	enum winreg_CreateAction action_taken;
@@ -2199,7 +2188,8 @@ static bool test_volatile_keys(struct torture_context *tctx,
 
 static bool test_symlink_keys(struct torture_context *tctx,
 			      struct dcerpc_binding_handle *b,
-			      struct policy_handle *handle)
+			      struct policy_handle *handle,
+			      int hkey)
 {
 	struct policy_handle new_handle;
 	enum winreg_CreateAction action_taken;
@@ -2258,7 +2248,8 @@ static bool test_symlink_keys(struct torture_context *tctx,
 
 static bool test_CreateKey_keytypes(struct torture_context *tctx,
 				    struct dcerpc_binding_handle *b,
-				    struct policy_handle *handle)
+				    struct policy_handle *handle,
+				    int hkey)
 {
 
 	if (torture_setting_bool(tctx, "samba3", false) ||
@@ -2267,11 +2258,11 @@ static bool test_CreateKey_keytypes(struct torture_context *tctx,
 	}
 
 	torture_assert(tctx,
-		test_volatile_keys(tctx, b, handle),
+		test_volatile_keys(tctx, b, handle, hkey),
 		"failed to test volatile keys");
 
 	torture_assert(tctx,
-		test_symlink_keys(tctx, b, handle),
+		test_symlink_keys(tctx, b, handle, hkey),
 		"failed to test symlink keys");
 
 	return true;
@@ -2279,7 +2270,8 @@ static bool test_CreateKey_keytypes(struct torture_context *tctx,
 
 static bool test_key_base(struct torture_context *tctx,
 			  struct dcerpc_binding_handle *b,
-			  struct policy_handle *handle)
+			  struct policy_handle *handle,
+			  int hkey)
 {
 	struct policy_handle newhandle;
 	bool ret = true, created = false, deleted = false;
@@ -2314,7 +2306,7 @@ static bool test_key_base(struct torture_context *tctx,
 			"simple SetValue test failed");
 		torture_assert(tctx, test_SetValue_extended(b, tctx, &newhandle),
 			"extended SetValue test failed");
-		torture_assert(tctx, test_CreateKey_keytypes(tctx, b, &newhandle),
+		torture_assert(tctx, test_CreateKey_keytypes(tctx, b, &newhandle, hkey),
 			"keytype test failed");
 
 		if (!test_CloseKey(b, tctx, &newhandle)) {
@@ -2436,6 +2428,7 @@ static bool test_Open(struct torture_context *tctx, struct dcerpc_pipe *p,
 	bool ret = true;
 	struct winreg_OpenHKLM r;
 	struct dcerpc_binding_handle *b = p->binding_handle;
+	int hkey = 0;
 
 	winreg_open_fn open_fn = (winreg_open_fn)userdata;
 
@@ -2452,12 +2445,24 @@ static bool test_Open(struct torture_context *tctx, struct dcerpc_pipe *p,
 	}
 
 	if (open_fn == (winreg_open_fn)dcerpc_winreg_OpenHKLM_r) {
+		hkey = HKEY_LOCAL_MACHINE;
+	} else if (open_fn == (winreg_open_fn)dcerpc_winreg_OpenHKU_r) {
+		hkey = HKEY_USERS;
+	} else if (open_fn == (winreg_open_fn)dcerpc_winreg_OpenHKCR_r) {
+		hkey = HKEY_CLASSES_ROOT;
+	} else if (open_fn == (winreg_open_fn)dcerpc_winreg_OpenHKCU_r) {
+		hkey = HKEY_CURRENT_USER;
+	} else {
+		torture_fail(tctx, "unsupported hkey");
+	}
+
+	if (hkey == HKEY_LOCAL_MACHINE) {
 		torture_assert(tctx,
 			test_HKLM_wellknown(tctx, b, &handle),
 			"failed to test HKLM wellknown keys");
 	}
 
-	if (!test_key_base(tctx, b, &handle)) {
+	if (!test_key_base(tctx, b, &handle, hkey)) {
 		torture_warning(tctx, "failed to test TEST_KEY_BASE");
 		ret = false;
 	}
@@ -2468,7 +2473,7 @@ static bool test_Open(struct torture_context *tctx, struct dcerpc_pipe *p,
 	}
 
 	/* The HKCR hive has a very large fanout */
-	if (open_fn == (winreg_open_fn)dcerpc_winreg_OpenHKCR_r) {
+	if (hkey == HKEY_CLASSES_ROOT) {
 		if(!test_key(p, tctx, &handle, MAX_DEPTH - 1, false)) {
 			ret = false;
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list