The branch, v3-5-test has been updated via b094f49... librpc/ndr: don't overwrite the content in ndr_push_relative_ptr2_end() via a2c0350... spoolss: use ndr_push_spoolss_PrinterInfo2 hand-marshalled version (moves devmode relative pointer down to sd). via 412ff72... spoolss: add spoolss_security_descriptor. via faf7ab1... s3: re-run make samba3-idl. via 1623a11... security: make two bitmaps public. via 63eae72... spoolss: make two bitmaps public. via ef3bd91... spoolss: make all security descriptors and devicemodes 4 byte aligned and add missing subcontexts. via 7c7917b... spoolss: set NDR_RELATIVE_REVERSE flag for various unions that have relative pointers. via 8343c3c... ndr_spoolss_buf: use LIBNDR_FLAG_NO_NDR_SIZE in NDR_SPOOLSS_SIZE_* via db00f01... spoolss: use subcontext in NDR_SPOOLSS_PUSH_ENUM_OUT macro. via 2d157ea... libndr: fix ndr_size_* calculation with relative reverse buffers via d8251b5... libndr: for now align reverse relative pointers to 2 bytes by default. via 148460b... libndr: implement LIBNDR_RELATIVE_REVERSE handling via b8f0d94... libndr: store a subcontext buffer size in ndr_push_subcontext_start. via 983ac75... libndr: give an error when ndr_push_relative_ptr2_start()/_end() is used with the RELATIVE_REVERSE flag via cc10379... libndr: add LIBNDR_FLAG_NO_RELATIVE_REVERSE so that relative reverse processing can be disabled for single structure elements. via f7634ed... libndr: add LIBNDR_FLAG_RELATIVE_REVERSE flag. via 07a5157... libndr: change subcontext buffer allocation to allocate on subcontext_start. via 66fe881... librpc/ndr: make ndr_push_relative_ptr2() static via bdf8ae4... librpc/ndr_krb5pac: use ndr_push_relative_ptr2_start()/_end() via e57719e... librpc/ndr_drsblobs: use ndr_push_relative_ptr2_start()/_end() via 08fd161... spoolss: fix relative pointers in ndr_push_spoolss_DriverInfo101. via 5edccc5... s3: re-run make full_idl. via b9db7b7... pidl: use ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end. via 478bf41... libndr: add ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end. from 7122d0e... Fix bug #7154 - mangling method = hash can crash storing a name not containing a '.'
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test - Log ----------------------------------------------------------------- commit b094f4954d0bef08794c5edcf102444908f1971c Author: Stefan Metzmacher <me...@samba.org> Date: Fri Feb 19 08:11:24 2010 +0100 librpc/ndr: don't overwrite the content in ndr_push_relative_ptr2_end() metze (cherry picked from commit 76aa37f653fec2d511921768381db7da661750cb) The last 24 patches address bug #6888 (REGRESSION: printing support for 64 bit windows clients broken). commit a2c03502df39c0ee8859895f4a80a3e48f798508 Author: Günther Deschner <g...@samba.org> Date: Sat Feb 13 03:45:25 2010 +0100 spoolss: use ndr_push_spoolss_PrinterInfo2 hand-marshalled version (moves devmode relative pointer down to sd). Guenther (cherry picked from commit 0a8011aa98ccaa81dc6ba2d30672ef4856fc31d8) commit 412ff72854040d5f619e978ce65c60f50f980f2b Author: Günther Deschner <g...@samba.org> Date: Tue Feb 16 02:48:01 2010 +0100 spoolss: add spoolss_security_descriptor. Guenther (cherry picked from commit 28817424935e5b6eaf465fe993dedc2b0a0cf177) commit faf7ab156092a1deffec25db300f11cdedb558a1 Author: Günther Deschner <g...@samba.org> Date: Tue Feb 9 16:47:32 2010 +0100 s3: re-run make samba3-idl. Guenther commit 1623a11fbde6f00fa3d05c8d088f48e206ad63ee Author: Günther Deschner <g...@samba.org> Date: Tue Feb 16 10:46:07 2010 +0100 security: make two bitmaps public. Guenther (cherry picked from commit f10a2d773d141f67319e19b45c40101bb9cb6cf4) commit 63eae72f981b619dd2baf1973bc5744ccd2fca28 Author: Günther Deschner <g...@samba.org> Date: Sat Feb 13 04:27:05 2010 +0100 spoolss: make two bitmaps public. Guenther (cherry picked from commit 8c4ff98ea11ff06e20bea73596e9643d8194a890) commit ef3bd911cae625b524fa79dc28e67db1234f1eeb Author: Stefan Metzmacher <me...@samba.org> Date: Thu Feb 18 15:36:08 2010 +0100 spoolss: make all security descriptors and devicemodes 4 byte aligned and add missing subcontexts. Guenther (cherry picked from commit 8f52957369bf8ce7591d5d9a1436ccb7e384c612) commit 7c7917ba9cdc17c6b5d1e1e51cde714c0be6e036 Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 17:22:39 2009 +0100 spoolss: set NDR_RELATIVE_REVERSE flag for various unions that have relative pointers. Guenther (cherry picked from commit 6d0a39741dacd81e33b25a91fa28cdf983d10d84) commit 8343c3c28a17cf8c464c9167d453855b5a0482c1 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Feb 18 15:17:42 2010 +0100 ndr_spoolss_buf: use LIBNDR_FLAG_NO_NDR_SIZE in NDR_SPOOLSS_SIZE_* metze (cherry picked from commit 2059a165ee6f4d231aa4075d8ddea70b8df8944f) commit db00f017f2ab67931bf04d53df592658fde69419 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Dec 23 15:52:39 2009 +0100 spoolss: use subcontext in NDR_SPOOLSS_PUSH_ENUM_OUT macro. metze (cherry picked from commit a4c3aeb79306190b09e284a6a28e3b40fbc5823b) commit 2d157eac5abcfe75968d80978c82d6b7b2b0359b Author: Stefan Metzmacher <me...@samba.org> Date: Thu Feb 18 15:13:20 2010 +0100 libndr: fix ndr_size_* calculation with relative reverse buffers metze (cherry picked from commit 8310f02414efd3b792857ed20c636c4c114e1ba2) commit d8251b5ab5e2d1abb8c69cc6ee2fe56bd074e48d Author: Stefan Metzmacher <me...@samba.org> Date: Thu Feb 18 13:40:44 2010 +0100 libndr: for now align reverse relative pointers to 2 bytes by default. This is just a hack and we should let the callers use FLAG_ALIGN2 explicit in future. metze (cherry picked from commit 4a76d29374769ba4c075b8d5767498848d2e17d6) commit 148460b4ed9dd1ecf83acace0641bab6d22f7296 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Feb 17 21:24:40 2010 +0100 libndr: implement LIBNDR_RELATIVE_REVERSE handling This is based on Guenther's initial code. metze (cherry picked from commit 31c7780c16651b284009874cf3da04587dc36d19) commit b8f0d947baab823586cea518e091de55de7b5f56 Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 15:33:32 2009 +0100 libndr: store a subcontext buffer size in ndr_push_subcontext_start. Guenther (cherry picked from commit 05347754ee61f06466d6d9b7f390001992f793ce) commit 983ac75b5b1f6bb79df15340c9ea73ed9c69aee2 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Feb 17 20:27:08 2010 +0100 libndr: give an error when ndr_push_relative_ptr2_start()/_end() is used with the RELATIVE_REVERSE flag metze (cherry picked from commit b5f9c44da55abb28222441a7e064a2a25891981f) commit cc103797c60b7a2ee48d73fefd91d7f4ab6586e3 Author: Günther Deschner <g...@samba.org> Date: Tue Feb 9 18:27:37 2010 +0100 libndr: add LIBNDR_FLAG_NO_RELATIVE_REVERSE so that relative reverse processing can be disabled for single structure elements. Guenther (cherry picked from commit a2c34296fa6ca2ffb69cb69698a9b5f81803e8a8) commit f7634ed1d3ca13c18e2c2a0f5f8206c3212b32c7 Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 15:09:00 2009 +0100 libndr: add LIBNDR_FLAG_RELATIVE_REVERSE flag. Guenther (cherry picked from commit ee13a51b0514ec3ac4ca9c532c2b101a08ec9784) commit 07a51577816e493c04f0fa7baaf798e9455d923f Author: Günther Deschner <g...@samba.org> Date: Wed Dec 16 22:54:02 2009 +0100 libndr: change subcontext buffer allocation to allocate on subcontext_start. Guenther (cherry picked from commit c9fa97b01774d767acfabaf1eec7a6aad1510440) commit 66fe881cfc0a0919a1d01df896ff8458436e780e Author: Stefan Metzmacher <me...@samba.org> Date: Wed Feb 17 20:00:36 2010 +0100 librpc/ndr: make ndr_push_relative_ptr2() static metze commit bdf8ae4229e16feb4547893d44805c4d04d7a9ab Author: Stefan Metzmacher <me...@samba.org> Date: Wed Feb 17 20:00:04 2010 +0100 librpc/ndr_krb5pac: use ndr_push_relative_ptr2_start()/_end() metze (cherry picked from commit e03591111a1b9c2f05c29a7afac4641f23f455f4) commit e57719ee8395fb288ad7d544c4a2b8fbf15bc72c Author: Stefan Metzmacher <me...@samba.org> Date: Wed Feb 17 19:59:19 2010 +0100 librpc/ndr_drsblobs: use ndr_push_relative_ptr2_start()/_end() metze (cherry picked from commit b423bd2115e006f9af5d40cf5b651e03739d53a0) commit 08fd161d53b1de4d8b55b2a24bc489658805332f Author: Günther Deschner <g...@samba.org> Date: Thu Feb 11 18:54:31 2010 +0100 spoolss: fix relative pointers in ndr_push_spoolss_DriverInfo101. Guenther (cherry picked from commit bfd6edb3e9339d602eb6514ff50c3bb6c671174e) commit 5edccc592e66c1ccea24b81c6a96c21fbabe746d Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 14:17:05 2009 +0100 s3: re-run make full_idl. Guenther (cherry picked from commit c869328b1642043480f9600c88bcce9da37959b1) commit b9db7b7e824a2dcbb9f501fa441392d151afc3a3 Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 14:09:22 2009 +0100 pidl: use ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end. Guenther (cherry picked from commit a049d75193b284fe9efb28d303ea46ba407e5a7a) commit 478bf4173af63345c27e09fd2dede56d506da0af Author: Günther Deschner <g...@samba.org> Date: Mon Dec 14 14:08:34 2009 +0100 libndr: add ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end. Guenther ----------------------------------------------------------------------- Summary of changes: librpc/gen_ndr/ndr_drsblobs.c | 24 +- librpc/gen_ndr/ndr_krb5pac.c | 3 +- librpc/gen_ndr/ndr_ntlmssp.c | 30 +- librpc/gen_ndr/ndr_security.c | 20 +- librpc/gen_ndr/ndr_security.h | 4 + librpc/gen_ndr/ndr_spoolss.c | 3326 ++++++++++++++++-------------- librpc/gen_ndr/ndr_spoolss.h | 4 + librpc/gen_ndr/ndr_svcctl.c | 24 +- librpc/gen_ndr/spoolss.h | 39 +- librpc/idl/idl_types.h | 3 + librpc/idl/security.idl | 4 +- librpc/idl/spoolss.idl | 45 +- librpc/ndr/libndr.h | 10 +- librpc/ndr/ndr.c | 143 ++- librpc/ndr/ndr_drsblobs.c | 6 +- librpc/ndr/ndr_krb5pac.c | 3 +- librpc/ndr/ndr_spoolss_buf.c | 332 +++- librpc/ndr/ndr_spoolss_buf.h | 3 + pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 6 +- 19 files changed, 2397 insertions(+), 1632 deletions(-) Changeset truncated at 500 lines: diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c index 8a0842b..33ebf4c 100644 --- a/librpc/gen_ndr/ndr_drsblobs.c +++ b/librpc/gen_ndr/ndr_drsblobs.c @@ -534,8 +534,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo1(struct ndr_push *ndr, int ndr_fl } if (ndr_flags & NDR_BUFFERS) { if (r->other_info) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->other_info)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->other_info)); NDR_CHECK(ndr_push_repsFromTo1OtherInfo(ndr, NDR_SCALARS, r->other_info)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->other_info)); } } ndr->flags = _flags_save_STRUCT; @@ -657,8 +658,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->dns_name1) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dns_name1)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dns_name1)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dns_name1)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dns_name1)); } ndr->flags = _flags_save_string; } @@ -666,8 +668,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->dns_name2) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dns_name2)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dns_name2)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dns_name2)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dns_name2)); } ndr->flags = _flags_save_string; } @@ -805,8 +808,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2(struct ndr_push *ndr, int ndr_fl } if (ndr_flags & NDR_BUFFERS) { if (r->other_info) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->other_info)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->other_info)); NDR_CHECK(ndr_push_repsFromTo2OtherInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->other_info)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->other_info)); } } ndr->flags = _flags_save_STRUCT; @@ -1794,13 +1798,14 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosString(struct ndr_push uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING); if (r->string) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->string)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->string)); { struct ndr_push *_ndr_string; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_string, 0, 2 * strlen_m(r->string))); NDR_CHECK(ndr_push_string(_ndr_string, NDR_SCALARS, r->string)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_string, 0, 2 * strlen_m(r->string))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->string)); } ndr->flags = _flags_save_string; } @@ -1892,13 +1897,14 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosKey3(struct ndr_push *n uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); if (r->value) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->value)); { struct ndr_push *_ndr_value; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_value, 0, (r->value?r->value->length:0))); NDR_CHECK(ndr_push_DATA_BLOB(_ndr_value, NDR_SCALARS, *r->value)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_value, 0, (r->value?r->value->length:0))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->value)); } ndr->flags = _flags_save_DATA_BLOB; } @@ -2118,13 +2124,14 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosKey4(struct ndr_push *n uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); if (r->value) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->value)); { struct ndr_push *_ndr_value; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_value, 0, (r->value?r->value->length:0))); NDR_CHECK(ndr_push_DATA_BLOB(_ndr_value, NDR_SCALARS, *r->value)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_value, 0, (r->value?r->value->length:0))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->value)); } ndr->flags = _flags_save_DATA_BLOB; } @@ -3001,8 +3008,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_trustCurrentPasswords(struct ndr_push *ndr, if (ndr_flags & NDR_BUFFERS) { for (cntr_current_0 = 0; cntr_current_0 < r->count; cntr_current_0++) { if (r->current[cntr_current_0]) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->current[cntr_current_0])); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->current[cntr_current_0])); NDR_CHECK(ndr_push_AuthenticationInformation(ndr, NDR_SCALARS, r->current[cntr_current_0])); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->current[cntr_current_0])); } } } diff --git a/librpc/gen_ndr/ndr_krb5pac.c b/librpc/gen_ndr/ndr_krb5pac.c index 0f4cfef..1f5ed95 100644 --- a/librpc/gen_ndr/ndr_krb5pac.c +++ b/librpc/gen_ndr/ndr_krb5pac.c @@ -535,13 +535,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_PAC_BUFFER_RAW(struct ndr_push *ndr, int ndr uint32_t _flags_save_DATA_BLOB_REM = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8); if (r->info) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->info)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->info)); { struct ndr_push *_ndr_info; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 0, NDR_ROUND(r->ndr_size, 8))); NDR_CHECK(ndr_push_DATA_BLOB_REM(_ndr_info, NDR_SCALARS, r->info)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 0, NDR_ROUND(r->ndr_size, 8))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->info)); } ndr->flags = _flags_save_DATA_BLOB_REM; } diff --git a/librpc/gen_ndr/ndr_ntlmssp.c b/librpc/gen_ndr/ndr_ntlmssp.c index b863826..130b8fe 100644 --- a/librpc/gen_ndr/ndr_ntlmssp.c +++ b/librpc/gen_ndr/ndr_ntlmssp.c @@ -286,13 +286,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM)); if (r->DomainName) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->DomainName)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->DomainName)); { struct ndr_push *_ndr_DomainName; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, strlen(r->DomainName))); NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, strlen(r->DomainName))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->DomainName)); } ndr->flags = _flags_save_string; } @@ -300,13 +301,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM)); if (r->Workstation) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->Workstation)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->Workstation)); { struct ndr_push *_ndr_Workstation; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, strlen(r->Workstation))); NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, strlen(r->Workstation))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->Workstation)); } ndr->flags = _flags_save_string; } @@ -1006,24 +1008,26 @@ _PUBLIC_ enum ndr_err_code ndr_push_CHALLENGE_MESSAGE(struct ndr_push *ndr, int uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags)); if (r->TargetName) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->TargetName)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->TargetName)); { struct ndr_push *_ndr_TargetName; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName))); NDR_CHECK(ndr_push_string(_ndr_TargetName, NDR_SCALARS, r->TargetName)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->TargetName)); } ndr->flags = _flags_save_string; } if (r->TargetInfo) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->TargetInfo)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->TargetInfo)); { struct ndr_push *_ndr_TargetInfo; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags))); NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo, NDR_SCALARS|NDR_BUFFERS, r->TargetInfo)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->TargetInfo)); } NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version)); } @@ -1664,7 +1668,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, i } if (ndr_flags & NDR_BUFFERS) { if (r->LmChallengeResponse) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->LmChallengeResponse)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->LmChallengeResponse)); { struct ndr_push *_ndr_LmChallengeResponse; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen)); @@ -1672,9 +1676,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, i NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->LmChallengeResponse)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen)); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->LmChallengeResponse)); } if (r->NtChallengeResponse) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->NtChallengeResponse)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->NtChallengeResponse)); { struct ndr_push *_ndr_NtChallengeResponse; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen)); @@ -1682,18 +1687,20 @@ _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, i NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->NtChallengeResponse)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen)); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->NtChallengeResponse)); } { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags)); if (r->DomainName) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->DomainName)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->DomainName)); { struct ndr_push *_ndr_DomainName; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName))); NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->DomainName)); } ndr->flags = _flags_save_string; } @@ -1701,13 +1708,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags)); if (r->UserName) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->UserName)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->UserName)); { struct ndr_push *_ndr_UserName; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName))); NDR_CHECK(ndr_push_string(_ndr_UserName, NDR_SCALARS, r->UserName)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->UserName)); } ndr->flags = _flags_save_string; } @@ -1715,24 +1723,26 @@ _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags)); if (r->Workstation) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->Workstation)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->Workstation)); { struct ndr_push *_ndr_Workstation; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation))); NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation))); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->Workstation)); } ndr->flags = _flags_save_string; } if (r->EncryptedRandomSessionKey) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->EncryptedRandomSessionKey)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->EncryptedRandomSessionKey)); { struct ndr_push *_ndr_EncryptedRandomSessionKey; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length)); NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey, NDR_SCALARS, *r->EncryptedRandomSessionKey)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length)); } + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->EncryptedRandomSessionKey)); } NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version)); } diff --git a/librpc/gen_ndr/ndr_security.c b/librpc/gen_ndr/ndr_security.c index 5453d0c..ceeba76 100644 --- a/librpc/gen_ndr/ndr_security.c +++ b/librpc/gen_ndr/ndr_security.c @@ -552,13 +552,13 @@ _PUBLIC_ void ndr_print_security_acl(struct ndr_print *ndr, const char *name, co ndr->depth--; } -static enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r) +_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r) { NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r)); return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r) +_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r) { uint8_t v; NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v)); @@ -576,13 +576,13 @@ _PUBLIC_ void ndr_print_security_descriptor_revision(struct ndr_print *ndr, cons ndr_print_enum(ndr, name, "ENUM", val, r); } -static enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r) +_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r) { NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r)); return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r) +_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r) { uint16_t v; NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v)); @@ -630,20 +630,24 @@ _PUBLIC_ enum ndr_err_code ndr_push_security_descriptor(struct ndr_push *ndr, in } if (ndr_flags & NDR_BUFFERS) { if (r->owner_sid) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->owner_sid)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->owner_sid)); NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->owner_sid)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->owner_sid)); } if (r->group_sid) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->group_sid)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->group_sid)); NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->group_sid)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->group_sid)); } if (r->sacl) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->sacl)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sacl)); NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->sacl)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sacl)); } if (r->dacl) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dacl)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dacl)); NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->dacl)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dacl)); } } ndr->flags = _flags_save_STRUCT; diff --git a/librpc/gen_ndr/ndr_security.h b/librpc/gen_ndr/ndr_security.h index b900d54..e1f943d 100644 --- a/librpc/gen_ndr/ndr_security.h +++ b/librpc/gen_ndr/ndr_security.h @@ -33,7 +33,11 @@ enum ndr_err_code ndr_push_security_acl(struct ndr_push *ndr, int ndr_flags, con enum ndr_err_code ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct security_acl *r); void ndr_print_security_acl(struct ndr_print *ndr, const char *name, const struct security_acl *r); size_t ndr_size_security_acl(const struct security_acl *r, struct smb_iconv_convenience *ic, int flags); +enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r); +enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r); void ndr_print_security_descriptor_revision(struct ndr_print *ndr, const char *name, enum security_descriptor_revision r); +enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r); +enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r); void ndr_print_security_descriptor_type(struct ndr_print *ndr, const char *name, uint16_t r); enum ndr_err_code ndr_push_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r); enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r); diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c index 9cb83b5..fe74901 100644 --- a/librpc/gen_ndr/ndr_spoolss.c +++ b/librpc/gen_ndr/ndr_spoolss.c @@ -228,13 +228,13 @@ _PUBLIC_ void ndr_print_spoolss_MinorVersion(struct ndr_print *ndr, const char * ndr_print_enum(ndr, name, "ENUM", val, r); } -static enum ndr_err_code ndr_push_spoolss_PrinterStatus(struct ndr_push *ndr, int ndr_flags, uint32_t r) +_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterStatus(struct ndr_push *ndr, int ndr_flags, uint32_t r) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_spoolss_PrinterStatus(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) +_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterStatus(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) { uint32_t v; NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); @@ -358,8 +358,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->printername) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->printername)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername)); } ndr->flags = _flags_save_string; } @@ -367,8 +368,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->servername) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->servername)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->servername)); } ndr->flags = _flags_save_string; } @@ -1240,13 +1242,13 @@ _PUBLIC_ void ndr_print_spoolss_EnumPrinterFlags(struct ndr_print *ndr, const ch ndr->depth--; } -static enum ndr_err_code ndr_push_spoolss_PrinterAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r) +_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_spoolss_PrinterAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) +_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) { uint32_t v; NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); @@ -1307,8 +1309,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->description) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description)); } ndr->flags = _flags_save_string; } @@ -1316,8 +1319,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->name) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->name)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->name)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->name)); } ndr->flags = _flags_save_string; } @@ -1325,8 +1329,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, i uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); if (r->comment) { - NDR_CHECK(ndr_push_relative_ptr2(ndr, r->comment)); + NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->comment)); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->comment)); + NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->comment)); } ndr->flags = _flags_save_string; } @@ -1464,210 +1469,6 @@ _PUBLIC_ size_t ndr_size_spoolss_PrinterInfo1(const struct spoolss_PrinterInfo1 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo1, ic); } -_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo2 *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 5)); - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sharename)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->portname)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->drivername)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->comment)); - ndr->flags = _flags_save_string; - } - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); - NDR_CHECK(ndr_push_relative_ptr1(ndr, r->location)); -- Samba Shared Repository