torture: add torture_suite_add_ndr_pull_io_test_flags()
authorGünther Deschner <gd@samba.org>
Wed, 18 Sep 2019 17:48:40 +0000 (19:48 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 20 Sep 2019 01:14:43 +0000 (01:14 +0000)
Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source4/torture/ndr/ndr.c
source4/torture/ndr/ndr.h

index 683b24ac68c22a50f591e5b918cdad67bca230e2..08236acb2814f997864845b0288b35c6fbb7592e 100644 (file)
@@ -152,6 +152,7 @@ static bool wrap_ndr_inout_pull_test(struct torture_context *tctx,
        ndr = ndr_pull_init_blob(&(data->data_context), tctx);
        torture_assert(tctx, ndr, "ndr init failed");
 
+       ndr->flags |= data->flags;
        ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
 
        torture_assert_ndr_success(tctx,
@@ -174,6 +175,7 @@ static bool wrap_ndr_inout_pull_test(struct torture_context *tctx,
        ndr = ndr_pull_init_blob(&(data->data), tctx);
        torture_assert(tctx, ndr, "ndr init failed");
 
+       ndr->flags |= data->flags;
        ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
 
        torture_assert_ndr_success(tctx,
@@ -204,6 +206,7 @@ _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull_inout_test(
                                        DATA_BLOB db_in,
                                        DATA_BLOB db_out,
                                        size_t struct_size,
+                                       int flags,
                                        bool (*check_fn) (struct torture_context *ctx, void *data))
 {
        struct torture_test *test;
@@ -221,6 +224,7 @@ _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull_inout_test(
        data->data = db_out;
        data->data_context = db_in;
        data->ndr_flags = 0;
+       data->flags = flags;
        data->struct_size = struct_size;
        data->pull_fn = pull_fn;
        test->data = data;
index 5c9808d79a8d58b3e285e417314cf1446b579a21..53b64e0881314851ccd9a7bff953d5942319e3f8 100644 (file)
@@ -41,6 +41,7 @@ _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull_inout_test(
                                        DATA_BLOB db_in,
                                        DATA_BLOB db_out,
                                        size_t struct_size,
+                                       int flags,
                                        bool (*check_fn) (struct torture_context *ctx, void *data));
 
 #define torture_suite_add_ndr_pull_test(suite,name,data,check_fn) \
@@ -112,6 +113,15 @@ _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull_inout_test(
                         data_blob_const(data_in, sizeof(data_in)), \
                         data_blob_const(data_out, sizeof(data_out)), \
                         sizeof(struct name), \
+                        0, \
                         (bool (*) (struct torture_context *, void *)) check_fn_out);
 
+#define torture_suite_add_ndr_pull_io_test_flags(suite,name,data_in,data_out,flags,check_fn_out) \
+               _torture_suite_add_ndr_pull_inout_test(suite, #name "_INOUT_" #flags, \
+                        (ndr_pull_flags_fn_t)ndr_pull_ ## name, \
+                        data_blob_const(data_in, sizeof(data_in)), \
+                        data_blob_const(data_out, sizeof(data_out)), \
+                        sizeof(struct name), \
+                        flags, \
+                        (bool (*) (struct torture_context *, void *)) check_fn_out);
 #endif /* __TORTURE_NDR_H__ */