s4-torture: add torture_ndr_push_struct_blob_flags() in order to manipulate push...
authorGünther Deschner <gd@samba.org>
Fri, 26 Jun 2015 14:45:21 +0000 (16:45 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 3 Jul 2015 00:00:27 +0000 (02:00 +0200)
Guenther

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

index 3ca74767ddb24f9a2ceb689ec847293b601fd8dd..fe3070579becd51c3d4161d6baeda2f9c7a23420 100644 (file)
@@ -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");
        }