From: Aaron Haslett Date: Tue, 28 May 2019 05:22:10 +0000 (+1200) Subject: ldb: test for parse errors X-Git-Tag: ldb-2.0.5~590 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2de0aebed60b8e83508f50e5391ede618ce0e595;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 --- diff --git a/lib/ldb/tests/ldb_kv_ops_test.c b/lib/ldb/tests/ldb_kv_ops_test.c index c16297e136b..ab9d75bc69c 100644 --- a/lib/ldb/tests/ldb_kv_ops_test.c +++ b/lib/ldb/tests/ldb_kv_ops_test.c @@ -206,6 +206,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. */ @@ -228,6 +239,7 @@ static void test_add_get(void **state) }; struct ldb_val read; + int rcode; int flags = 0; TALLOC_CTX *tmp_ctx; @@ -265,6 +277,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 = ldb_kv->kv_ops->fetch_and_parse(ldb_kv, key, + parse_return, + &rcode); + assert_int_equal(ret, rcode); + } + ret = ldb_kv->kv_ops->unlock_read(test_ctx->ldb->modules); assert_int_equal(ret, 0); talloc_free(tmp_ctx);