[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Thu Nov 3 14:42:01 MDT 2011


The branch, master has been updated
       via  1dbffa7 s4:lib/registry - enhance registry tests in respect to default values
       via  7e0bef6 s4:lib/registry/ldb.c - quit the deletion of a not-existing default value with WERR_BADFILE
       via  6b5a296 s4:lib/registry/ldb.c - don't use search filters for base searches
       via  042372b s4:lib/registry/regf.c - always generate debug messages on error cases
      from  79ab7ac s4-smbtorture: add some ndr validation tests for netlogon_samlogon_response structs.

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


- Log -----------------------------------------------------------------
commit 1dbffa70ae42dc254abbea0b7a958044a621996d
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu Oct 27 09:54:06 2011 +0200

    s4:lib/registry - enhance registry tests in respect to default values
    
    Reviewed-by: Jelmer
    
    Autobuild-User: Matthias Dieter Wallnöfer <mdw at samba.org>
    Autobuild-Date: Thu Nov  3 21:41:17 CET 2011 on sn-devel-104

commit 7e0bef604af0abeedd46f3ae42bd3002f18556f5
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Fri Oct 28 19:52:49 2011 +0200

    s4:lib/registry/ldb.c - quit the deletion of a not-existing default value with WERR_BADFILE
    
    Reviewed-by: Jelmer

commit 6b5a296b4a5ec55b57d72e07ee1b5b6c0e20f282
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Tue Oct 25 20:08:31 2011 +0200

    s4:lib/registry/ldb.c - don't use search filters for base searches
    
    They are not necessary in this case.
    
    Reviewed-by: Jelmer

commit 042372bc20375f30a292b57bebe1c4d7608339ca
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Fri Oct 28 18:20:47 2011 +0200

    s4:lib/registry/regf.c - always generate debug messages on error cases
    
    We need to know what is going on.
    
    Reviewed-by: Jelmer

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

Summary of changes:
 source4/lib/registry/ldb.c            |   10 ++++--
 source4/lib/registry/regf.c           |    3 +-
 source4/lib/registry/tests/registry.c |   55 ++++++++++++++++++++++++++++++++-
 3 files changed, 63 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/lib/registry/ldb.c b/source4/lib/registry/ldb.c
index 5244a20..0f0ddf9 100644
--- a/source4/lib/registry/ldb.c
+++ b/source4/lib/registry/ldb.c
@@ -408,7 +408,8 @@ static WERROR ldb_get_default_value(TALLOC_CTX *mem_ctx,
 	struct ldb_result *res;
 	int ret;
 
-	ret = ldb_search(c, mem_ctx, &res, kd->dn, LDB_SCOPE_BASE, attrs, "(dn=*)");
+	ret = ldb_search(c, mem_ctx, &res, kd->dn, LDB_SCOPE_BASE, attrs,
+			 NULL);
 
 	if (ret != LDB_SUCCESS) {
 		DEBUG(0, ("Error getting default value for '%s': %s\n",
@@ -503,7 +504,8 @@ static WERROR ldb_open_key(TALLOC_CTX *mem_ctx, const struct hive_key *h,
 	ldb_path = reg_path_to_ldb(mem_ctx, h, name, NULL);
 	W_ERROR_HAVE_NO_MEMORY(ldb_path);
 
-	ret = ldb_search(c, mem_ctx, &res, ldb_path, LDB_SCOPE_BASE, NULL, "(key=*)");
+	ret = ldb_search(c, mem_ctx, &res, ldb_path, LDB_SCOPE_BASE, NULL,
+			 NULL);
 
 	if (ret != LDB_SUCCESS) {
 		DEBUG(3, ("Error opening key '%s': %s\n",
@@ -651,7 +653,9 @@ static WERROR ldb_del_value(TALLOC_CTX *mem_ctx, struct hive_key *key,
 
 		talloc_free(msg);
 
-		if (ret != LDB_SUCCESS) {
+		if (ret == LDB_ERR_NO_SUCH_ATTRIBUTE) {
+			return WERR_BADFILE;
+		} else if (ret != LDB_SUCCESS) {
 			DEBUG(1, ("ldb_del_value: %s\n", ldb_errstring(kd->ldb)));
 			return WERR_FOOBAR;
 		}
diff --git a/source4/lib/registry/regf.c b/source4/lib/registry/regf.c
index 5ca7b7c..b6a586c 100644
--- a/source4/lib/registry/regf.c
+++ b/source4/lib/registry/regf.c
@@ -2211,7 +2211,7 @@ WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx, const char *location,
 	pull->data.data = (uint8_t*)fd_load(regf->fd, &pull->data.length, 0, regf);
 
 	if (pull->data.data == NULL) {
-		DEBUG(0, ("Error reading data\n"));
+		DEBUG(0, ("Error reading data from file: %s\n", location));
 		talloc_free(regf);
 		return WERR_GENERAL_FAILURE;
 	}
@@ -2220,6 +2220,7 @@ WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx, const char *location,
 	W_ERROR_HAVE_NO_MEMORY(regf_hdr);
 
 	if (NT_STATUS_IS_ERR(tdr_pull_regf_hdr(pull, regf_hdr, regf_hdr))) {
+		DEBUG(0, ("Failed to pull regf header from file: %s\n", location));
 		talloc_free(regf);
 		return WERR_GENERAL_FAILURE;
 	}
diff --git a/source4/lib/registry/tests/registry.c b/source4/lib/registry/tests/registry.c
index 7179c72..4e6dda4 100644
--- a/source4/lib/registry/tests/registry.c
+++ b/source4/lib/registry/tests/registry.c
@@ -255,8 +255,9 @@ static bool test_query_key(struct torture_context *tctx, void *_data)
 	NTTIME last_changed_time;
 	uint32_t num_subkeys, num_values;
 	const char *classname;
+	const char *data = "temp";
 
-	if (!create_test_key(tctx, rctx, "Munchen", &root, &subkey))
+	if (!create_test_key(tctx, rctx, "Muenchen", &root, &subkey))
 		return false;
 
 	error = reg_key_get_info(tctx, subkey, &classname,
@@ -268,6 +269,19 @@ static bool test_query_key(struct torture_context *tctx, void *_data)
 	torture_assert_int_equal(tctx, num_subkeys, 0, "num subkeys");
 	torture_assert_int_equal(tctx, num_values, 0, "num values");
 
+	error = reg_val_set(subkey, "", REG_SZ,
+			    data_blob_talloc(tctx, data, sizeof(data)));
+	torture_assert_werr_ok(tctx, error, "set default value");
+
+	error = reg_key_get_info(tctx, subkey, &classname,
+				 &num_subkeys, &num_values,
+				 &last_changed_time, NULL, NULL, NULL);
+
+	torture_assert_werr_ok(tctx, error, "get info key");
+	torture_assert(tctx, classname == NULL, "classname");
+	torture_assert_int_equal(tctx, num_subkeys, 0, "num subkeys");
+	torture_assert_int_equal(tctx, num_values, 1, "num values");
+
 	return true;
 }
 
@@ -409,6 +423,8 @@ static bool test_get_value(struct torture_context *tctx, void *_data)
 	DATA_BLOB data;
 	char value[4];
 	uint32_t type;
+	const char *data_val = "temp";
+
 	SIVAL(value, 0, 42);
 
 	if (!create_test_key(tctx, rctx, "Duisburg", &root, &subkey))
@@ -432,6 +448,17 @@ static bool test_get_value(struct torture_context *tctx, void *_data)
 				 "value content ok");
 	torture_assert_int_equal(tctx, REG_DWORD, type, "value type");
 
+	error = reg_val_set(subkey, "", REG_SZ,
+			    data_blob_talloc(tctx, data_val, sizeof(data_val)));
+	torture_assert_werr_ok(tctx, error, "set default value");
+
+	error = reg_key_get_value_by_name(tctx, subkey, "", &type,
+					  &data);
+	torture_assert_werr_ok(tctx, error, "getting default value");
+	torture_assert_int_equal(tctx, REG_SZ, type, "value type ok");
+	torture_assert_int_equal(tctx, sizeof(data_val), data.length, "value length ok");
+	torture_assert_str_equal(tctx, data_val, (char *)data.data, "value ok");
+
 	return true;
 }
 
@@ -446,6 +473,8 @@ static bool test_del_value(struct torture_context *tctx, void *_data)
 	DATA_BLOB data;
 	uint32_t type;
 	char value[4];
+	const char *data_val = "temp";
+
 	SIVAL(value, 0, 42);
 
 	if (!create_test_key(tctx, rctx, "Warschau", &root, &subkey))
@@ -468,6 +497,17 @@ static bool test_del_value(struct torture_context *tctx, void *_data)
 	torture_assert_werr_equal(tctx, error, WERR_BADFILE,
 				  "getting missing value");
 
+	error = reg_del_value(tctx, subkey, "");
+	torture_assert_werr_equal(tctx, error, WERR_BADFILE,
+				  "unsetting missing default value");
+
+	error = reg_val_set(subkey, "", REG_SZ,
+			    data_blob_talloc(tctx, data_val, sizeof(data_val)));
+	torture_assert_werr_ok(tctx, error, "set default value");
+
+	error = reg_del_value(tctx, subkey, "");
+	torture_assert_werr_ok (tctx, error, "unsetting default value");
+
 	return true;
 }
 
@@ -483,6 +523,8 @@ static bool test_list_values(struct torture_context *tctx, void *_data)
 	uint32_t type;
 	const char *name;
 	char value[4];
+	const char *data_val = "temp";
+
 	SIVAL(value, 0, 42);
 
 	if (!create_test_key(tctx, rctx, "Bonn", &root, &subkey))
@@ -507,6 +549,17 @@ static bool test_list_values(struct torture_context *tctx, void *_data)
 	torture_assert_werr_equal(tctx, error, WERR_NO_MORE_ITEMS,
 				  "getting missing value");
 
+	error = reg_val_set(subkey, "", REG_SZ,
+			    data_blob_talloc(tctx, data_val, sizeof(data_val)));
+	torture_assert_werr_ok(tctx, error, "set default value");
+
+	error = reg_key_get_value_by_index(tctx, subkey, 0, &name,
+					   &type, &data);
+	torture_assert_werr_ok(tctx, error, "getting default value");
+	torture_assert_int_equal(tctx, REG_SZ, type, "value type ok");
+	torture_assert_int_equal(tctx, sizeof(data_val), data.length, "value length ok");
+	torture_assert_str_equal(tctx, data_val, (char *)data.data, "value ok");
+
 	return true;
 }
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list