The branch, v4-0-test has been updated
       via  4b054cee51c39c5430bcadd5c06a94dc3e6b0d8f (commit)
       via  4e6937816f1563686d04da4ab00a46d4461401b9 (commit)
       via  70a7b1f6c2e359102467ea270c2bb1efe736f64a (commit)
      from  925a2066ffa18a86704a8ee1a7a6908e0cd65a2a (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 4b054cee51c39c5430bcadd5c06a94dc3e6b0d8f
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Tue Aug 19 10:36:24 2008 +0200

    drsuapi: fix samba4 callers after drsuapi.idl changes
    
    metze

commit 4e6937816f1563686d04da4ab00a46d4461401b9
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Tue Aug 19 10:35:15 2008 +0200

    drsuapi.idl: readd type serialization headers to compressed 
DsGetNCChangesCtr*
    
    metze

commit 70a7b1f6c2e359102467ea270c2bb1efe736f64a
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Tue Aug 19 10:33:03 2008 +0200

    ndr_compression: remove the type serialization handling from the 
compression layer
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source/dsdb/repl/drepl_out_helpers.c |   20 +++++++++++++-----
 source/libnet/libnet_become_dc.c     |   19 ++++++++++++-----
 source/librpc/idl/drsuapi.idl        |   16 +++++++++++---
 source/librpc/ndr/ndr_compression.c  |   36 ----------------------------------
 source/torture/rpc/dssync.c          |   15 ++++++++-----
 5 files changed, 48 insertions(+), 58 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/dsdb/repl/drepl_out_helpers.c 
b/source/dsdb/repl/drepl_out_helpers.c
index 3629a3b..80b398e 100644
--- a/source/dsdb/repl/drepl_out_helpers.c
+++ b/source/dsdb/repl/drepl_out_helpers.c
@@ -314,27 +314,35 @@ static void 
dreplsrv_op_pull_source_get_changes_recv(struct rpc_request *req)
        if (*r->out.level == 1) {
                ctr_level = 1;
                ctr1 = &r->out.ctr.ctr1;
-       } else if (*r->out.level == 2) {
+       } else if (*r->out.level == 2 &&
+                  r->out.ctr.ctr2.mszip1.ts) {
                ctr_level = 1;
-               ctr1 = r->out.ctr.ctr2.mszip1.ctr1;
+               ctr1 = &r->out.ctr.ctr2.mszip1.ts->ctr1;
        } else if (*r->out.level == 6) {
                ctr_level = 6;
                ctr6 = &r->out.ctr.ctr6;
        } else if (*r->out.level == 7 &&
                   r->out.ctr.ctr7.level == 6 &&
-                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP) {
+                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP &&
+                  r->out.ctr.ctr7.ctr.mszip6.ts) {
                ctr_level = 6;
-               ctr6 = r->out.ctr.ctr7.ctr.mszip6.ctr6;
+               ctr6 = &r->out.ctr.ctr7.ctr.mszip6.ts->ctr6;
        } else if (*r->out.level == 7 &&
                   r->out.ctr.ctr7.level == 6 &&
-                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_XPRESS) {
+                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_XPRESS &&
+                  r->out.ctr.ctr7.ctr.xpress6.ts) {
                ctr_level = 6;
-               ctr6 = r->out.ctr.ctr7.ctr.xpress6.ctr6;
+               ctr6 = &r->out.ctr.ctr7.ctr.xpress6.ts->ctr6;
        } else {
                composite_error(c, werror_to_ntstatus(WERR_BAD_NET_RESP));
                return;
        }
 
+       if (!ctr1 && !ctr6) {
+               composite_error(c, werror_to_ntstatus(WERR_BAD_NET_RESP));
+               return;
+       }
+
        if (ctr_level == 6) {
                if (!W_ERROR_IS_OK(ctr6->drs_error)) {
                        composite_error(c, werror_to_ntstatus(ctr6->drs_error));
diff --git a/source/libnet/libnet_become_dc.c b/source/libnet/libnet_become_dc.c
index 19391e7..332b041 100644
--- a/source/libnet/libnet_become_dc.c
+++ b/source/libnet/libnet_become_dc.c
@@ -2465,26 +2465,33 @@ static WERROR 
becomeDC_drsuapi_pull_partition_recv(struct libnet_BecomeDC_state
        if (*r->out.level == 1) {
                ctr_level = 1;
                ctr1 = &r->out.ctr.ctr1;
-       } else if (*r->out.level == 2) {
+       } else if (*r->out.level == 2 &&
+                  r->out.ctr.ctr2.mszip1.ts) {
                ctr_level = 1;
-               ctr1 = r->out.ctr.ctr2.mszip1.ctr1;
+               ctr1 = &r->out.ctr.ctr2.mszip1.ts->ctr1;
        } else if (*r->out.level == 6) {
                ctr_level = 6;
                ctr6 = &r->out.ctr.ctr6;
        } else if (*r->out.level == 7 &&
                   r->out.ctr.ctr7.level == 6 &&
-                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP) {
+                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP &&
+                  r->out.ctr.ctr7.ctr.mszip6.ts) {
                ctr_level = 6;
-               ctr6 = r->out.ctr.ctr7.ctr.mszip6.ctr6;
+               ctr6 = &r->out.ctr.ctr7.ctr.mszip6.ts->ctr6;
        } else if (*r->out.level == 7 &&
                   r->out.ctr.ctr7.level == 6 &&
-                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_XPRESS) {
+                  r->out.ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_XPRESS &&
+                  r->out.ctr.ctr7.ctr.xpress6.ts) {
                ctr_level = 6;
-               ctr6 = r->out.ctr.ctr7.ctr.xpress6.ctr6;
+               ctr6 = &r->out.ctr.ctr7.ctr.xpress6.ts->ctr6;
        } else {
                return WERR_BAD_NET_RESP;
        }
 
+       if (!ctr1 && ! ctr6) {
+               return WERR_BAD_NET_RESP;
+       }
+
        if (ctr_level == 6) {
                if (!W_ERROR_IS_OK(ctr6->drs_error)) {
                        return ctr6->drs_error;
diff --git a/source/librpc/idl/drsuapi.idl b/source/librpc/idl/drsuapi.idl
index 88d2126..b929bb0 100644
--- a/source/librpc/idl/drsuapi.idl
+++ b/source/librpc/idl/drsuapi.idl
@@ -618,11 +618,19 @@ interface drsuapi
        } drsuapi_DsGetNCChangesCtr6;
 
        typedef struct {
+               [subcontext(0xFFFFFC01)] drsuapi_DsGetNCChangesCtr1 ctr1;
+       } drsuapi_DsGetNCChangesCtr1TS;
+
+       typedef struct {
+               [subcontext(0xFFFFFC01)] drsuapi_DsGetNCChangesCtr6 ctr6;
+       } drsuapi_DsGetNCChangesCtr6TS;
+
+       typedef struct {
                uint32 decompressed_length;
                uint32 compressed_length;
                [subcontext(4),subcontext_size(compressed_length),
                 
compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
-                drsuapi_DsGetNCChangesCtr1 *ctr1;
+                drsuapi_DsGetNCChangesCtr1TS *ts;
        } drsuapi_DsGetNCChangesMSZIPCtr1;
 
        typedef struct {
@@ -630,7 +638,7 @@ interface drsuapi
                uint32 compressed_length;
                [subcontext(4),subcontext_size(compressed_length),
                 
compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
-                drsuapi_DsGetNCChangesCtr6 *ctr6;
+                drsuapi_DsGetNCChangesCtr6TS *ts;
        } drsuapi_DsGetNCChangesMSZIPCtr6;
 
        typedef struct {
@@ -638,7 +646,7 @@ interface drsuapi
                uint32 compressed_length;
                [subcontext(4),subcontext_size(compressed_length),
                 
compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)]
-                drsuapi_DsGetNCChangesCtr1 *ctr1;
+                drsuapi_DsGetNCChangesCtr1TS *ts;
        } drsuapi_DsGetNCChangesXPRESSCtr1;
 
        typedef struct {
@@ -646,7 +654,7 @@ interface drsuapi
                uint32 compressed_length;
                [subcontext(4),subcontext_size(compressed_length),
                 
compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)]
-                drsuapi_DsGetNCChangesCtr6 *ctr6;
+                drsuapi_DsGetNCChangesCtr6TS *ts;
        } drsuapi_DsGetNCChangesXPRESSCtr6;
 
        typedef [enum16bit] enum {
diff --git a/source/librpc/ndr/ndr_compression.c 
b/source/librpc/ndr/ndr_compression.c
index ad8dda1..f6de0a1 100644
--- a/source/librpc/ndr/ndr_compression.c
+++ b/source/librpc/ndr/ndr_compression.c
@@ -212,10 +212,6 @@ enum ndr_err_code ndr_pull_compression_start(struct 
ndr_pull *subndr,
        struct ndr_push *ndrpush;
        struct ndr_pull *comndr;
        DATA_BLOB uncompressed;
-       uint32_t payload_header[4];
-       uint32_t payload_size;
-       uint32_t payload_offset;
-       uint8_t *payload;
        bool last = false;
        z_stream z;
 
@@ -261,38 +257,6 @@ enum ndr_err_code ndr_pull_compression_start(struct 
ndr_pull *subndr,
 
        comndr->iconv_convenience = talloc_reference(comndr, 
subndr->iconv_convenience);
 
-       NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[0]));
-       NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[1]));
-       NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[2]));
-       NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[3]));
-
-       if (payload_header[0] != 0x00081001) {
-               return ndr_pull_error(subndr, NDR_ERR_COMPRESSION,
-                                     "Bad XPRESS payload_header[0] [0x%08X] != 
[0x00081001] (PULL)",
-                                     payload_header[0]);
-       }
-       if (payload_header[1] != 0xCCCCCCCC) {
-               return ndr_pull_error(subndr, NDR_ERR_COMPRESSION,
-                                     "Bad XPRESS payload_header[1] [0x%08X] != 
[0xCCCCCCCC] (PULL)",
-                                     payload_header[1]);
-       }
-
-       payload_size = payload_header[2];
-
-       if (payload_header[3] != 0x00000000) {
-               return ndr_pull_error(subndr, NDR_ERR_COMPRESSION,
-                                     "Bad XPRESS payload_header[3] [0x%08X] != 
[0x00000000] (PULL)",
-                                     payload_header[3]);
-       }
-
-       payload_offset = comndr->offset;
-       NDR_CHECK(ndr_pull_advance(comndr, payload_size));
-       payload = comndr->data + payload_offset;
-
-       comndr->data            = payload;
-       comndr->data_size       = payload_size;
-       comndr->offset          = 0;
-
        *_comndr = comndr;
        return NDR_ERR_SUCCESS;
 }
diff --git a/source/torture/rpc/dssync.c b/source/torture/rpc/dssync.c
index 2739081..e9346f9 100644
--- a/source/torture/rpc/dssync.c
+++ b/source/torture/rpc/dssync.c
@@ -747,9 +747,10 @@ static bool test_FetchData(struct torture_context *tctx, 
struct DsSyncTest *ctx)
                        if (ret == true && *r.out.level == 1) {
                                out_level = 1;
                                ctr1 = &r.out.ctr.ctr1;
-                       } else if (ret == true && *r.out.level == 2) {
+                       } else if (ret == true && *r.out.level == 2 &&
+                                  r.out.ctr.ctr2.mszip1.ts) {
                                out_level = 1;
-                               ctr1 = r.out.ctr.ctr2.mszip1.ctr1;
+                               ctr1 = &r.out.ctr.ctr2.mszip1.ts->ctr1;
                        }
 
                        if (out_level == 1) {
@@ -770,14 +771,16 @@ static bool test_FetchData(struct torture_context *tctx, 
struct DsSyncTest *ctx)
                                ctr6 = &r.out.ctr.ctr6;
                        } else if (ret == true && *r.out.level == 7
                                   && r.out.ctr.ctr7.level == 6
-                                  && r.out.ctr.ctr7.type == 
DRSUAPI_COMPRESSION_TYPE_MSZIP) {
+                                  && r.out.ctr.ctr7.type == 
DRSUAPI_COMPRESSION_TYPE_MSZIP
+                                  && r.out.ctr.ctr7.ctr.mszip6.ts) {
                                out_level = 6;
-                               ctr6 = r.out.ctr.ctr7.ctr.mszip6.ctr6;
+                               ctr6 = &r.out.ctr.ctr7.ctr.mszip6.ts->ctr6;
                        } else if (ret == true && *r.out.level == 7
                                   && r.out.ctr.ctr7.level == 6
-                                  && r.out.ctr.ctr7.type == 
DRSUAPI_COMPRESSION_TYPE_XPRESS) {
+                                  && r.out.ctr.ctr7.type == 
DRSUAPI_COMPRESSION_TYPE_XPRESS
+                                  && r.out.ctr.ctr7.ctr.xpress6.ts) {
                                out_level = 6;
-                               ctr6 = r.out.ctr.ctr7.ctr.xpress6.ctr6;
+                               ctr6 = &r.out.ctr.ctr7.ctr.xpress6.ts->ctr6;
                        }
 
                        if (out_level == 6) {


-- 
Samba Shared Repository

Reply via email to