summaryrefslogtreecommitdiff
path: root/pidl
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2023-03-24 15:00:33 +1300
committerAndrew Bartlett <abartlet@samba.org>2023-03-31 01:48:30 +0000
commit976dfc7585fcce594f5e77c8bb8ccc9644625f95 (patch)
tree1ef94f92afe50b577371b34b608cecd8b711376e /pidl
parent2cba54ba30e96dafb5a49f11defdb08efcc19590 (diff)
downloadsamba-976dfc7585fcce594f5e77c8bb8ccc9644625f95.tar.gz
pidl: Allow variable expansion (eg of a value() attribute) in compression_alg argument
Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'pidl')
-rw-r--r--pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm14
1 files changed, 7 insertions, 7 deletions
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
index db992aa9e47..55c3965b7b6 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
@@ -481,12 +481,12 @@ sub ParseArrayPullHeader($$$$$$)
return $array_length;
}
-sub compression_alg($$)
+sub compression_alg($$$)
{
- my ($e, $l) = @_;
+ my ($e, $l, $env) = @_;
my ($alg, $clen, $dlen) = split(/,/, $l->{COMPRESSION});
- return $alg;
+ return ParseExpr($alg, $env, $e->{ORIGINAL});
}
sub compression_clen($$$)
@@ -509,7 +509,7 @@ sub ParseCompressionPushStart($$$$$)
{
my ($self,$e,$l,$ndr,$env) = @_;
my $comndr = "$ndr\_compressed";
- my $alg = compression_alg($e, $l);
+ my $alg = compression_alg($e, $l, $env);
my $dlen = compression_dlen($e, $l, $env);
$self->pidl("{");
@@ -524,7 +524,7 @@ sub ParseCompressionPushEnd($$$$$)
{
my ($self,$e,$l,$ndr,$env) = @_;
my $comndr = "$ndr\_compressed";
- my $alg = compression_alg($e, $l);
+ my $alg = compression_alg($e, $l, $env);
my $dlen = compression_dlen($e, $l, $env);
$self->pidl("NDR_CHECK(ndr_push_compression_end($ndr, $comndr, $alg, $dlen));");
@@ -536,7 +536,7 @@ sub ParseCompressionPullStart($$$$$)
{
my ($self,$e,$l,$ndr,$env) = @_;
my $comndr = "$ndr\_compressed";
- my $alg = compression_alg($e, $l);
+ my $alg = compression_alg($e, $l, $env);
my $dlen = compression_dlen($e, $l, $env);
my $clen = compression_clen($e, $l, $env);
@@ -552,7 +552,7 @@ sub ParseCompressionPullEnd($$$$$)
{
my ($self,$e,$l,$ndr,$env) = @_;
my $comndr = "$ndr\_compressed";
- my $alg = compression_alg($e, $l);
+ my $alg = compression_alg($e, $l, $env);
my $dlen = compression_dlen($e, $l, $env);
$self->pidl("NDR_CHECK(ndr_pull_compression_end($ndr, $comndr, $alg, $dlen));");