summaryrefslogtreecommitdiff
path: root/source4/build
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build')
-rw-r--r--source4/build/pidl/ndr.pm3
-rw-r--r--source4/build/pidl/ndr_parser.pm6
-rw-r--r--source4/build/pidl/validator.pm1
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"],