[SCM] Samba Shared Repository - branch v3-4-test updated

Karolin Seeger kseeger at samba.org
Fri Feb 19 04:31:18 MST 2010


The branch, v3-4-test has been updated
       via  58b089f... librpc/ndr: don't overwrite the content in ndr_push_relative_ptr2_end()
       via  31a0975... spoolss: use ndr_push_spoolss_PrinterInfo2 hand-marshalled version (moves devmode relative pointer down to sd).
       via  1856478... spoolss: add spoolss_security_descriptor.
       via  d35eb81... s3: re-run make samba3-idl.
       via  b9748d5... security: make two bitmaps public.
       via  b64cd98... spoolss: make two bitmaps public.
       via  a4cb149... spoolss: make all security descriptors and devicemodes 4 byte aligned and add missing subcontexts.
       via  93aab77... spoolss: set NDR_RELATIVE_REVERSE flag for various unions that have relative pointers.
       via  3174acb... ndr_spoolss_buf: use LIBNDR_FLAG_NO_NDR_SIZE in NDR_SPOOLSS_SIZE_*
       via  4a8dda5... spoolss: use subcontext in NDR_SPOOLSS_PUSH_ENUM_OUT macro.
       via  56a6011... libndr: fix ndr_size_* calculation with relative reverse buffers
       via  00d97b0... libndr: for now align reverse relative pointers to 2 bytes by default.
       via  33d03a8... libndr: implement LIBNDR_RELATIVE_REVERSE handling
       via  4efead4... libndr: store a subcontext buffer size in ndr_push_subcontext_start.
       via  2f8872b... libndr: give an error when ndr_push_relative_ptr2_start()/_end() is used with the RELATIVE_REVERSE flag
       via  a026311... libndr: add LIBNDR_FLAG_NO_RELATIVE_REVERSE so that relative reverse processing can be disabled for single structure elements.
       via  d0eb23b... libndr: add LIBNDR_FLAG_RELATIVE_REVERSE flag.
       via  d2bb2f1... libndr: change subcontext buffer allocation to allocate on subcontext_start.
       via  d4606cd... librpc/ndr: make ndr_push_relative_ptr2() static
       via  8abc4b5... librpc/ndr_krb5pac: use ndr_push_relative_ptr2_start()/_end()
       via  c495dd1... librpc/ndr_drsblobs: use ndr_push_relative_ptr2_start()/_end()
       via  8232ada... spoolss: fix relative pointers in ndr_push_spoolss_DriverInfo101.
       via  9be36f5... s3: re-run make full_idl.
       via  c1c56a0... pidl: use ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end.
       via  f52de6e... libndr: add ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end.
      from  7eaeb89... 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-4-test


- Log -----------------------------------------------------------------
commit 58b089f2176e564bf5563fbffa034cd22525ed6e
Author: Stefan Metzmacher <metze at 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 25 patches address bug #6888 (REGRESSION: printing support for 64 bit
    windows clients broken).

commit 31a097560efddfabf31c4cc54e683603ee24521f
Author: Günther Deschner <gd at 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

commit 18564787e2f169cac26d361201c1a954b7e263b7
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 16 02:48:01 2010 +0100

    spoolss: add spoolss_security_descriptor.
    
    Guenther

commit d35eb81c50340ed2ac14cdb9965fd13876ea8e64
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 9 16:47:32 2010 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit b9748d59c09ffe9de7cbb953939cf89017dc8087
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 16 10:46:07 2010 +0100

    security: make two bitmaps public.
    
    Guenther
    (cherry picked from commit f10a2d773d141f67319e19b45c40101bb9cb6cf4)

commit b64cd9857086f56e1e698ae34e51413b6414eb0b
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 13 04:27:05 2010 +0100

    spoolss: make two bitmaps public.
    
    Guenther

commit a4cb14987143c2c1f28e82e5b6476e079ea051d3
Author: Stefan Metzmacher <metze at 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 93aab77e24ecdd95ced8efe0c0f7bcdfb5ed2a1b
Author: Günther Deschner <gd at 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 3174acb66089b649ec2b859c1ef673814c44ffa4
Author: Stefan Metzmacher <metze at 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 4a8dda5b149a82b83d22dc7b0cf77573ef35580d
Author: Stefan Metzmacher <metze at 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 56a6011221aec94b64ac4499b825ff96d1ed22b4
Author: Stefan Metzmacher <metze at 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 00d97b0a06bd1c2d0cb6d15b5560f2850323c1a9
Author: Stefan Metzmacher <metze at 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 33d03a884eefad8d8c43f3dbe457866282219965
Author: Stefan Metzmacher <metze at 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 4efead4bea29aee555473e1350c3f5671b56c829
Author: Günther Deschner <gd at 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 2f8872bdff4f193043f5195f11ec6a8b44e0f8f1
Author: Stefan Metzmacher <metze at 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 a026311c81bc8d7f154dad96b77c6121432384a3
Author: Günther Deschner <gd at 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 d0eb23b3cd9dbdd174d2c0cdbcdb41fbf2a6df53
Author: Günther Deschner <gd at 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 d2bb2f150a8cf4e18c0bbbc357e237261942dccb
Author: Günther Deschner <gd at 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 d4606cd2663823831d61a98ee719d6121cdcf450
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Feb 17 20:00:36 2010 +0100

    librpc/ndr: make ndr_push_relative_ptr2() static
    
    metze

commit 8abc4b5dc5e06e846f0966c74a75f22e27504287
Author: Stefan Metzmacher <metze at 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 c495dd164771cfc8358713c5b07ddd07642fd33c
Author: Stefan Metzmacher <metze at 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 8232ada560194fc967cfcb4cb3d14e55e221c321
Author: Günther Deschner <gd at 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 9be36f59cfd1d973feeb045da975aafc869abfbd
Author: Günther Deschner <gd at samba.org>
Date:   Mon Dec 14 14:17:05 2009 +0100

    s3: re-run make full_idl.
    
    Guenther

commit c1c56a0ebd6a8c777d8aa8b7d45858d03e7dce57
Author: Günther Deschner <gd at 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 f52de6e2293de4a7ba4726025dd936228b51b5b5
Author: Günther Deschner <gd at 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            |   15 +-
 librpc/gen_ndr/ndr_krb5pac.c             |    3 +-
 librpc/gen_ndr/ndr_security.c            |   20 +-
 librpc/gen_ndr/ndr_security.h            |    4 +
 librpc/gen_ndr/ndr_spoolss.c             | 3234 ++++++++++++++++--------------
 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             |  330 +++-
 librpc/ndr/ndr_spoolss_buf.h             |    3 +
 pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm |    6 +-
 18 files changed, 2322 insertions(+), 1574 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
index 426ade2..78baa98 100644
--- a/librpc/gen_ndr/ndr_drsblobs.c
+++ b/librpc/gen_ndr/ndr_drsblobs.c
@@ -515,8 +515,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;
@@ -1452,13 +1453,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;
 		}
@@ -1548,13 +1550,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;
 		}
@@ -1770,13 +1773,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;
 		}
@@ -2627,8 +2631,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 27025c0..7a2a476 100644
--- a/librpc/gen_ndr/ndr_krb5pac.c
+++ b/librpc/gen_ndr/ndr_krb5pac.c
@@ -520,13 +520,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_security.c b/librpc/gen_ndr/ndr_security.c
index c227170..3ae6ec3 100644
--- a/librpc/gen_ndr/ndr_security.c
+++ b/librpc/gen_ndr/ndr_security.c
@@ -541,13 +541,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_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_uint8(ndr, NDR_SCALARS, &v));
@@ -565,13 +565,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));
@@ -618,20 +618,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 eddd3c3..6613cce 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 d531cbf..cca1b12 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -224,13 +224,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));
@@ -353,8 +353,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;
 		}
@@ -362,8 +363,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;
 		}
@@ -792,8 +794,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;
 		}
@@ -801,8 +804,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;
 		}
@@ -810,8 +814,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;
 		}
@@ -948,13 +953,13 @@ _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);
 }
 
-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));
@@ -985,209 +990,6 @@ _PUBLIC_ void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const c
 	ndr->depth--;
 }
 
-_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, 4));
-		{
-			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));
-			ndr->flags = _flags_save_string;
-		}
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sepfile));
-			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->printprocessor));
-			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->datatype));
-			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->parameters));
-			ndr->flags = _flags_save_string;
-		}
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
-		NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->defaultpriority));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->starttime));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->untiltime));
-		NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->averageppm));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			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_string(ndr, NDR_SCALARS, r->servername));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			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_string(ndr, NDR_SCALARS, r->printername));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->sharename) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->sharename));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sharename));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->portname) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->portname));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->portname));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->drivername) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->drivername));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->drivername));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			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_string(ndr, NDR_SCALARS, r->comment));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->location) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->location));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->location));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		if (r->devmode) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->devmode));
-			{
-				struct ndr_push *_ndr_devmode;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
-				NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
-			}
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->sepfile) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->sepfile));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sepfile));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->printprocessor) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->printprocessor));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printprocessor));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->datatype) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->datatype));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->datatype));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->parameters) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->parameters));
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
-			}
-			ndr->flags = _flags_save_string;
-		}
-		if (r->secdesc) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->secdesc));
-			{
-				struct ndr_push *_ndr_secdesc;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
-				NDR_CHECK(ndr_push_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
 _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo2 *r)
 {
 	uint32_t _ptr_servername;
@@ -1302,12 +1104,17 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 			}
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
-		if (_ptr_devmode) {
-			NDR_PULL_ALLOC(ndr, r->devmode);
-			NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
-		} else {
-			r->devmode = NULL;
+		{
+			uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
+			if (_ptr_devmode) {
+				NDR_PULL_ALLOC(ndr, r->devmode);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
+			} else {
+				r->devmode = NULL;
+			}
+			ndr->flags = _flags_save_spoolss_DeviceMode;
 		}
 		{
 			uint32_t _flags_save_string = ndr->flags;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list