diff options
Diffstat (limited to 'source4/build/pidl')
-rw-r--r-- | source4/build/pidl/ndr.pm | 3 | ||||
-rw-r--r-- | source4/build/pidl/ndr_parser.pm | 6 | ||||
-rw-r--r-- | source4/build/pidl/validator.pm | 1 |
3 files changed, 9 insertions, 1 deletions
diff --git a/source4/build/pidl/ndr.pm b/source4/build/pidl/ndr.pm index 2bf673b5e3..c4ff1d8a89 100644 --- a/source4/build/pidl/ndr.pm +++ b/source4/build/pidl/ndr.pm @@ -166,7 +166,8 @@ sub GetElementLevelTable($) SUBCONTEXT_SIZE => $subsize, IS_DEFERRED => $is_deferred, COMPRESSION => util::has_property($e, "compression"), - OBFUSCATION => util::has_property($e, "obfuscation") + OBFUSCATION => util::has_property($e, "obfuscation"), + PAD8 => util::has_property($e, "pad8") }); } diff --git a/source4/build/pidl/ndr_parser.pm b/source4/build/pidl/ndr_parser.pm index ba6b9d58da..48e243aa0c 100644 --- a/source4/build/pidl/ndr_parser.pm +++ b/source4/build/pidl/ndr_parser.pm @@ -452,6 +452,9 @@ sub ParseSubcontextPushEnd($$$$) pidl "NDR_CHECK(ndr_push_subcontext_header(ndr, $l->{HEADER_SIZE}, $subcontext_size, $ndr));"; pidl "NDR_CHECK(ndr_push_bytes(ndr, $ndr->data, $ndr->offset));"; + if (defined $l->{PAD8}) { + pidl "NDR_CHECK(ndr_push_align(ndr, 8));"; + } deindent; pidl "}"; } @@ -501,6 +504,9 @@ sub ParseSubcontextPullEnd($$$) $advance = "$ndr->offset"; } pidl "NDR_CHECK(ndr_pull_advance(ndr, $advance));"; + if (defined $l->{PAD8}) { + pidl "NDR_CHECK(ndr_pull_align(ndr, 8));"; + } deindent; pidl "}"; } diff --git a/source4/build/pidl/validator.pm b/source4/build/pidl/validator.pm index fbf7993b20..f1677d1ae7 100644 --- a/source4/build/pidl/validator.pm +++ b/source4/build/pidl/validator.pm @@ -106,6 +106,7 @@ my %property_list = ( "default" => ["ELEMENT"], # subcontext + "pad8" => ["ELEMENT"], "subcontext" => ["ELEMENT"], "subcontext_size" => ["ELEMENT"], "compression" => ["ELEMENT"], |