summaryrefslogtreecommitdiff
path: root/source4/torture/ndr
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2015-06-26 16:45:21 +0200
committerGünther Deschner <gd@samba.org>2015-07-03 02:00:27 +0200
commit6d3f7620d2ed0cdc7183d01eff8a0ac2fb55e788 (patch)
tree496c45c6902ec38a09b043dbc59f2dc4ee446362 /source4/torture/ndr
parentc82aed878ef5fe0994999ada4ee6f37e98027f31 (diff)
downloadsamba-6d3f7620d2ed0cdc7183d01eff8a0ac2fb55e788.tar.gz
s4-torture: add torture_ndr_push_struct_blob_flags() in order to manipulate push flags.
Guenther Signed-off-by: Günther Deschner <gd@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/torture/ndr')
-rw-r--r--source4/torture/ndr/ndr.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source4/torture/ndr/ndr.c b/source4/torture/ndr/ndr.c
index 3ca74767ddb..fe3070579be 100644
--- a/source4/torture/ndr/ndr.c
+++ b/source4/torture/ndr/ndr.c
@@ -34,6 +34,23 @@ struct ndr_pull_test_data {
int flags;
};
+static enum ndr_err_code torture_ndr_push_struct_blob_flags(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, uint32_t flags, uint32_t ndr_flags, const void *p, ndr_push_flags_fn_t fn)
+{
+ struct ndr_push *ndr;
+ ndr = ndr_push_init_ctx(mem_ctx);
+ NDR_ERR_HAVE_NO_MEMORY(ndr);
+
+ ndr->flags |= ndr_flags;
+
+ NDR_CHECK(fn(ndr, flags, p));
+
+ *blob = ndr_push_blob(ndr);
+ talloc_steal(mem_ctx, blob->data);
+ talloc_free(ndr);
+
+ return NDR_ERR_SUCCESS;
+}
+
static bool wrap_ndr_pullpush_test(struct torture_context *tctx,
struct torture_tcase *tcase,
struct torture_test *test)
@@ -70,7 +87,7 @@ static bool wrap_ndr_pullpush_test(struct torture_context *tctx,
if (data->push_fn != NULL) {
DATA_BLOB outblob;
- torture_assert_ndr_success(tctx, ndr_push_struct_blob(&outblob, ndr, ds, data->push_fn), "pushing");
+ torture_assert_ndr_success(tctx, torture_ndr_push_struct_blob_flags(&outblob, ndr, data->ndr_flags, ndr->flags, ds, data->push_fn), "pushing");
torture_assert_data_blob_equal(tctx, outblob, data->data, "ndr push compare");
}