From: Andrew Bartlett Date: Fri, 24 Mar 2023 02:00:33 +0000 (+1300) Subject: pidl: Allow variable expansion (eg of a value() attribute) in compression_alg argument X-Git-Tag: talloc-2.4.1~1246 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=976dfc7585fcce594f5e77c8bb8ccc9644625f95;p=thirdparty%2Fsamba.git pidl: Allow variable expansion (eg of a value() attribute) in compression_alg argument Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- 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));");