From: Aaron Haslett Date: Tue, 28 May 2019 05:22:10 +0000 (+1200) Subject: ldb: test for parse errors X-Git-Tag: ldb-1.4.8~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e9e7afc2599cd95d2b7b374575bb4b20fa1c060;p=thirdparty%2Fsamba.git ldb: test for parse errors Parse errors aren't passed up correctly by the tdb backend. This patch modifies a test to expose the issue, next patch will fix it. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13959 Signed-off-by: Aaron Haslett Reviewed-by: Andrew Bartlett Reviewed-by: Garming Sam (cherry picked from commit 2de0aebed60b8e83508f50e5391ede618ce0e595) --- diff --git a/lib/ldb/tests/ldb_kv_ops_test.c b/lib/ldb/tests/ldb_kv_ops_test.c index 30ce019fac8..4183f65bc57 100644 --- a/lib/ldb/tests/ldb_kv_ops_test.c +++ b/lib/ldb/tests/ldb_kv_ops_test.c @@ -201,6 +201,17 @@ static int parse(struct ldb_val key, return LDB_SUCCESS; } +/* + * Parse function that just returns the int we pass it. + */ +static int parse_return(struct ldb_val key, + struct ldb_val data, + void *private_data) +{ + int *rcode = private_data; + return *rcode; +} + /* * Test that data can be written to the kv store and be read back. */ @@ -223,6 +234,7 @@ static void test_add_get(void **state) }; struct ldb_val read; + int rcode; int flags = 0; TALLOC_CTX *tmp_ctx; @@ -260,6 +272,17 @@ static void test_add_get(void **state) assert_int_equal(sizeof(value), read.length); assert_memory_equal(value, read.data, sizeof(value)); + /* + * Now check that the error code we return in the + * parse function is returned by fetch_and_parse. + */ + for (rcode=0; rcode<50; rcode++) { + ret = ltdb->kv_ops->fetch_and_parse(ltdb, key, + parse_return, + &rcode); + assert_int_equal(ret, rcode); + } + ret = ltdb->kv_ops->unlock_read(test_ctx->ldb->modules); assert_int_equal(ret, 0); talloc_free(tmp_ctx);