From 937bf4b8365d6f99c34d83d11975d43d41ba5790 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 17 Mar 2023 13:10:09 +1300 Subject: librpc/ndr: Unimplement DRSUAPI_COMPRESSION_TYPE_XPRESS and rename DRSUAPI_COMPRESSION_TYPE_XPRESS is not MS-XCA nor is it implemented by lzexpress_compress(), so disconnect from that algorithm. This avoids someone fixing lzxpress_compress() to work for DRSUAPI and breaking claims support. Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- librpc/idl/drsuapi.idl | 14 +++++++------- librpc/ndr/libndr.h | 3 ++- librpc/ndr/ndr_drsuapi.c | 20 ++++++++++---------- 3 files changed, 19 insertions(+), 18 deletions(-) (limited to 'librpc') diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl index 59a795a74e3..a45855be12c 100644 --- a/librpc/idl/drsuapi.idl +++ b/librpc/idl/drsuapi.idl @@ -790,28 +790,28 @@ interface drsuapi uint32 decompressed_length; uint32 compressed_length; [subcontext(4),subcontext_size(compressed_length), - compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)] + compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)] drsuapi_DsGetNCChangesCtr1TS *ts; - } drsuapi_DsGetNCChangesXPRESSCtr1; + } drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1; typedef [nopush] struct { uint32 decompressed_length; uint32 compressed_length; [subcontext(4),subcontext_size(compressed_length), - compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)] + compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)] drsuapi_DsGetNCChangesCtr6TS *ts; - } drsuapi_DsGetNCChangesXPRESSCtr6; + } drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6; typedef [enum16bit] enum { DRSUAPI_COMPRESSION_TYPE_MSZIP = 2, - DRSUAPI_COMPRESSION_TYPE_XPRESS = 3 + DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2 = 3 /* CompressOrDecompressWin2k3 DRS_COMP_ALG_WIN2K3 */ } drsuapi_DsGetNCChangesCompressionType; typedef [nodiscriminant,flag(NDR_PAHEX)] union { [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr1 mszip1; [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr6 mszip6; - [case(1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] drsuapi_DsGetNCChangesXPRESSCtr1 xpress1; - [case(6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] drsuapi_DsGetNCChangesXPRESSCtr6 xpress6; + [case(1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 xpress1; + [case(6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 xpress6; } drsuapi_DsGetNCChangesCompressedCtr; typedef struct { diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index 98f8ff870d2..65b111d532c 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -292,7 +292,8 @@ enum ndr_err_code { enum ndr_compression_alg { NDR_COMPRESSION_MSZIP_CAB = 1, NDR_COMPRESSION_MSZIP = 2, - NDR_COMPRESSION_XPRESS = 3 + NDR_COMPRESSION_XPRESS = 3, + NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2 = 4, /* Unimplemented */ }; /* diff --git a/librpc/ndr/ndr_drsuapi.c b/librpc/ndr/ndr_drsuapi.c index cda2e2cf3c5..d4cc5a92a5c 100644 --- a/librpc/ndr/ndr_drsuapi.c +++ b/librpc/ndr/ndr_drsuapi.c @@ -291,7 +291,7 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesMSZIPCtr6(struct ndr_push *ndr, return NDR_ERR_SUCCESS; } -enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesXPRESSCtr1 *r) +enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 *r) { if (ndr_flags & NDR_SCALARS) { uint32_t decompressed_length = 0; @@ -302,10 +302,10 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_push *ndr NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ts, 4, -1)); { struct ndr_push *_ndr_ts_compressed; - NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1TS(_ndr_ts_compressed, NDR_SCALARS|NDR_BUFFERS, r->ts)); decompressed_length = _ndr_ts_compressed->offset; - NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); } compressed_length = _ndr_ts->offset; talloc_free(_ndr_ts); @@ -323,9 +323,9 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_push *ndr NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ts, 4, -1)); { struct ndr_push *_ndr_ts_compressed; - NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1TS(_ndr_ts_compressed, NDR_SCALARS|NDR_BUFFERS, r->ts)); - NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); } NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ts, 4, -1)); } @@ -334,7 +334,7 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_push *ndr return NDR_ERR_SUCCESS; } -enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesXPRESSCtr6 *r) +enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 *r) { if (ndr_flags & NDR_SCALARS) { uint32_t decompressed_length = 0; @@ -345,10 +345,10 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_push *ndr NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ts, 4, -1)); { struct ndr_push *_ndr_ts_compressed; - NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6TS(_ndr_ts_compressed, NDR_SCALARS|NDR_BUFFERS, r->ts)); decompressed_length = _ndr_ts_compressed->offset; - NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); } compressed_length = _ndr_ts->offset; talloc_free(_ndr_ts); @@ -366,9 +366,9 @@ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_push *ndr NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ts, 4, -1)); { struct ndr_push *_ndr_ts_compressed; - NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_start(_ndr_ts, &_ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6TS(_ndr_ts_compressed, NDR_SCALARS|NDR_BUFFERS, r->ts)); - NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_XPRESS, -1)); + NDR_CHECK(ndr_push_compression_end(_ndr_ts, _ndr_ts_compressed, NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2, -1)); } NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ts, 4, -1)); } -- cgit v1.2.1