diff options
author | Aaron Haslett <aaronhaslett@catalyst.net.nz> | 2019-05-28 17:22:10 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2019-05-29 04:41:24 +0000 |
commit | 2de0aebed60b8e83508f50e5391ede618ce0e595 (patch) | |
tree | cd7809248a7bce209bd3fcccbe8bafa7165c8708 /lib | |
parent | 73080f255e379ed030005031f560c3ed71919b06 (diff) | |
download | samba-2de0aebed60b8e83508f50e5391ede618ce0e595.tar.gz |
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 <aaronhaslett@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ldb/tests/ldb_kv_ops_test.c | 23 |
1 files changed, 23 insertions, 0 deletions
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 @@ -207,6 +207,17 @@ static int parse(struct ldb_val key, } /* + * 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. */ static void test_add_get(void **state) @@ -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); |