libndr/compression: pass down compressed length in ndr_pull_compression_start
authorGünther Deschner <gd@samba.org>
Mon, 19 Sep 2016 22:18:43 +0000 (00:18 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 19 Jul 2017 19:22:13 +0000 (21:22 +0200)
Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
librpc/ndr/ndr_compression.c
librpc/ndr/ndr_compression.h
pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm

index 240fad8ffd513552ea32da12ef9616b640f4e2fe..fd915ccaaa6215b4591e523b564eac6372c387e8 100644 (file)
@@ -383,7 +383,8 @@ static enum ndr_err_code ndr_push_compression_xpress_chunk(struct ndr_push *ndrp
 enum ndr_err_code ndr_pull_compression_start(struct ndr_pull *subndr,
                                    struct ndr_pull **_comndr,
                                    enum ndr_compression_alg compression_alg,
-                                   ssize_t decompressed_len)
+                                   ssize_t decompressed_len,
+                                   ssize_t compressed_len)
 {
        struct ndr_push *ndrpush;
        struct ndr_pull *comndr;
index 1c22fbf7595e4e8c253abbbe4cd53771d4739dce..d682d4d36931b669f242e6e28c4ce6581b64d9db 100644 (file)
@@ -37,7 +37,8 @@
 enum ndr_err_code ndr_pull_compression_start(struct ndr_pull *subndr,
                                    struct ndr_pull **_comndr,
                                    enum ndr_compression_alg compression_alg,
-                                   ssize_t decompressed_len);
+                                   ssize_t decompressed_len,
+                                   ssize_t compressed_len);
 enum ndr_err_code ndr_pull_compression_end(struct ndr_pull *subndr,
                                  struct ndr_pull *comndr,
                                  enum ndr_compression_alg compression_alg,
index 6739b5f439109ce38866279183cf69dfe19d8eb5..cfcd29e25a7b07c2e608a7a7f6a4b28d800ef88b 100644 (file)
@@ -525,11 +525,12 @@ sub ParseCompressionPullStart($$$$$)
        my $comndr = "$ndr\_compressed";
        my $alg = compression_alg($e, $l);
        my $dlen = compression_dlen($e, $l, $env);
+       my $clen = compression_clen($e, $l, $env);
 
        $self->pidl("{");
        $self->indent;
        $self->pidl("struct ndr_pull *$comndr;");
-       $self->pidl("NDR_CHECK(ndr_pull_compression_start($ndr, &$comndr, $alg, $dlen));");
+       $self->pidl("NDR_CHECK(ndr_pull_compression_start($ndr, &$comndr, $alg, $dlen, $clen));");
 
        return $comndr;
 }