[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#620210: pu: package samba/2:3.5.6~dfsg3-squeeze3



Quoting Adam D. Barratt (adam@adam-barratt.org.uk):

> Thanks, and for your patience with us on this.
> 
> Please feel free to go ahead with the upload.

I uploaded the new package this morning. debdiff attached. Picky
people will notice that this version also drop an accidental change
that leaked into the squeeze2 package: an extra, empty, nohup.out file
on top of the source tree and the relevant debian/patches patch.

Apart from that minor change (which I didn't think relevant for being
documented in the changelog), the changes are exactly those I proposed
in #620210.


diff -Nru samba-3.5.6~dfsg/debian/changelog samba-3.5.6~dfsg/debian/changelog
--- samba-3.5.6~dfsg/debian/changelog	2011-02-23 20:22:40.000000000 +0100
+++ samba-3.5.6~dfsg/debian/changelog	2011-04-30 18:52:21.000000000 +0200
@@ -1,3 +1,17 @@
+samba (2:3.5.6~dfsg-3squeeze3) stable-proposed-updates; urgency=low
+
+  * Cherry-picked fixes from samba 3.5.8 for some important bugs:
+    - Upstream bug 7567: printing from Windows 7 fails with 0x000003e6.
+      Closes: #617429
+    - Upstream bug 6727: printer device settings not saved for normal
+      domain users. Closes: #611177	  
+    - Upstream bug 7777: winbind leaks gids with idmap ldap backend
+      Closes: #613624
+    - Upstream bug 7880: rpcclient deldriver does not remove drivers
+      from all architectures.
+
+ -- Christian Perrier <bubulle@debian.org>  Sun, 13 Mar 2011 08:07:42 +0100
+
 samba (2:3.5.6~dfsg-3squeeze2) stable-security; urgency=high
 
   * Security update, fixing the following issue:
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0001-rerun-make-samba3-idl.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0001-rerun-make-samba3-idl.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0001-rerun-make-samba3-idl.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0001-rerun-make-samba3-idl.patch	2011-03-14 22:05:30.000000000 +0100
@@ -0,0 +1,5993 @@
+From 1a58a34d41a42baa696fa543cd8a9d79794886a3 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Wed, 2 Mar 2011 10:14:54 +0100
+Subject: [PATCH 1/9] rerun 'make samba3-idl'
+
+metze
+
+The last 10 patches address bug #7567 (printing from Windows 7 fails with
+0x000003e6 (in AD w2k8r2 controlled domain)).
+(cherry picked from commit c81256b04ead01f0d44c8a235d2ac793b7a51364)
+(cherry picked from commit cbfda3a086e27b6efa7db6ab1d41ef96fe04d171)
+---
+ librpc/gen_ndr/drsblobs.h     |    4 +-
+ librpc/gen_ndr/eventlog.h     |   12 +-
+ librpc/gen_ndr/misc.h         |    4 +-
+ librpc/gen_ndr/nbt.h          |   26 +-
+ librpc/gen_ndr/ndr_drsblobs.c |   16 +-
+ librpc/gen_ndr/ndr_eventlog.c |   24 +-
+ librpc/gen_ndr/ndr_misc.c     |   12 +-
+ librpc/gen_ndr/ndr_nbt.c      |   44 +-
+ librpc/gen_ndr/ndr_netlogon.c |    8 +-
+ librpc/gen_ndr/ndr_spoolss.c  | 1056 ++++++++++++++++++++--------------------
+ librpc/gen_ndr/ndr_svcctl.c   |   40 +-
+ librpc/gen_ndr/netlogon.h     |    4 +-
+ librpc/gen_ndr/spoolss.h      |  304 ++++++------
+ librpc/gen_ndr/svcctl.h       |   10 +-
+ 14 files changed, 782 insertions(+), 782 deletions(-)
+
+diff --git a/librpc/gen_ndr/drsblobs.h b/librpc/gen_ndr/drsblobs.h
+index 64f6ce8..f4adc57 100644
+--- a/librpc/gen_ndr/drsblobs.h
++++ b/librpc/gen_ndr/drsblobs.h
+@@ -84,9 +84,9 @@ struct repsFromTo1 {
+ 
+ struct repsFromTo2OtherInfo {
+ 	uint32_t __ndr_size;/* [value(ndr_size_repsFromTo2OtherInfo(this,ndr->iconv_convenience,ndr->flags))] */
+-	const char * dns_name1;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * dns_name1;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t unknown1;
+-	const char * dns_name2;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * dns_name2;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint64_t unknown2;
+ }/* [relative_base,gensize,public] */;
+ 
+diff --git a/librpc/gen_ndr/eventlog.h b/librpc/gen_ndr/eventlog.h
+index dc2e877..2ff0cbc 100644
+--- a/librpc/gen_ndr/eventlog.h
++++ b/librpc/gen_ndr/eventlog.h
+@@ -59,13 +59,13 @@ struct eventlog_Record_tdb {
+ 	uint32_t data_length;/* [value(data.length)] */
+ 	uint32_t data_offset;
+ 	uint32_t source_name_len;/* [value(2*strlen_m_term(source_name))] */
+-	const char * source_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * source_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t computer_name_len;/* [value(2*strlen_m_term(computer_name))] */
+-	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t sid_padding;
+ 	DATA_BLOB sid;
+ 	uint32_t strings_len;/* [value(2*ndr_size_string_array(strings,num_of_strings,LIBNDR_FLAG_STR_NULLTERM))] */
+-	const char * *strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * *strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	DATA_BLOB data;
+ 	uint32_t padding;
+ }/* [public,flag(LIBNDR_FLAG_NOALIGN|LIBNDR_PRINT_ARRAY_HEX)] */;
+@@ -119,10 +119,10 @@ struct EVENTLOGRECORD {
+ 	uint32_t UserSidOffset;/* [value(56+2*(strlen_m_term(SourceName)+strlen_m_term(Computername)))] */
+ 	uint32_t DataLength;
+ 	uint32_t DataOffset;/* [value(56+2*(strlen_m_term(SourceName)+strlen_m_term(Computername))+UserSidLength+(2*ndr_size_string_array(Strings,NumStrings,LIBNDR_FLAG_STR_NULLTERM)))] */
+-	const char * SourceName;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * Computername;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * SourceName;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * Computername;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct dom_sid0 UserSid;/* [subcontext_size(UserSidLength),subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+-	const char * *Strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * *Strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint8_t *Data;/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */
+ 	const char * Pad;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	uint32_t Length2;/* [value(Length)] */
+diff --git a/librpc/gen_ndr/misc.h b/librpc/gen_ndr/misc.h
+index 6672c61..90330b3 100644
+--- a/librpc/gen_ndr/misc.h
++++ b/librpc/gen_ndr/misc.h
+@@ -84,10 +84,10 @@ enum winreg_Type
+ ;
+ 
+ union winreg_Data {
+-	const char * string;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_SZ)] */
++	const char * string;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2),case(REG_SZ)] */
+ 	DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING),case(REG_BINARY)] */
+ 	uint32_t value;/* [case(REG_DWORD)] */
+-	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_MULTI_SZ)] */
++	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2),case(REG_MULTI_SZ)] */
+ 	DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
+ }/* [public,nodiscriminant,flag(LIBNDR_FLAG_LITTLE_ENDIAN)] */;
+ 
+diff --git a/librpc/gen_ndr/nbt.h b/librpc/gen_ndr/nbt.h
+index ec234e1..31ea414 100644
+--- a/librpc/gen_ndr/nbt.h
++++ b/librpc/gen_ndr/nbt.h
+@@ -456,8 +456,8 @@ enum netlogon_command
+ 
+ struct NETLOGON_SAM_LOGON_REQUEST {
+ 	uint16_t request_count;
+-	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	const char * mailslot_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	uint32_t acct_control;
+ 	uint32_t sid_size;/* [value(ndr_size_dom_sid0(&sid,ndr->flags))] */
+@@ -470,9 +470,9 @@ struct NETLOGON_SAM_LOGON_REQUEST {
+ 
+ struct NETLOGON_SAM_LOGON_RESPONSE_NT40 {
+ 	enum netlogon_command command;
+-	const char * server;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * domain;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * server;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * domain;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t nt_version;
+ 	uint16_t lmnt_token;
+ 	uint16_t lm20_token;
+@@ -480,9 +480,9 @@ struct NETLOGON_SAM_LOGON_RESPONSE_NT40 {
+ 
+ struct NETLOGON_SAM_LOGON_RESPONSE {
+ 	enum netlogon_command command;
+-	const char * pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * domain_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * domain_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct GUID domain_uuid;
+ 	struct GUID zero_uuid;
+ 	const char * forest;
+@@ -520,7 +520,7 @@ struct nbt_netlogon_query_for_pdc {
+ 	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	const char * mailslot_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN2)] */
+-	const char * unicode_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * unicode_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t nt_version;
+ 	uint16_t lmnt_token;
+ 	uint16_t lm20_token;
+@@ -530,8 +530,8 @@ struct nbt_netlogon_response_from_pdc {
+ 	enum netlogon_command command;
+ 	const char * pdc_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN2)] */
+-	const char * unicode_pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * domain_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * unicode_pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * domain_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t nt_version;
+ 	uint16_t lmnt_token;
+ 	uint16_t lm20_token;
+@@ -551,8 +551,8 @@ struct NETLOGON_DB_CHANGE {
+ 	const char * pdc_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	const char * domain;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN2)] */
+-	const char * unicode_pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * unicode_domain;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * unicode_pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * unicode_domain;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t db_count;
+ 	struct nbt_db_change_info *dbchange;
+ 	uint32_t sid_size;/* [value(ndr_size_dom_sid0(&sid,ndr->flags))] */
+diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
+index 33ebf4c..948fdc5 100644
+--- a/librpc/gen_ndr/ndr_drsblobs.c
++++ b/librpc/gen_ndr/ndr_drsblobs.c
+@@ -638,14 +638,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo2OtherInfo(r, ndr->iconv_convenience, ndr->flags)));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dns_name1));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dns_name2));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -656,7 +656,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (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));
+@@ -666,7 +666,7 @@ _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);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (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));
+@@ -692,7 +692,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name1));
+ 			if (_ptr_dns_name1) {
+ 				NDR_PULL_ALLOC(ndr, r->dns_name1);
+@@ -705,7 +705,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name2));
+ 			if (_ptr_dns_name2) {
+ 				NDR_PULL_ALLOC(ndr, r->dns_name2);
+@@ -722,7 +722,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dns_name1) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -737,7 +737,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dns_name2) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+diff --git a/librpc/gen_ndr/ndr_eventlog.c b/librpc/gen_ndr/ndr_eventlog.c
+index a7e502c..e0ac6d2 100644
+--- a/librpc/gen_ndr/ndr_eventlog.c
++++ b/librpc/gen_ndr/ndr_eventlog.c
+@@ -121,14 +121,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record_tdb(struct ndr_push *ndr, in
+ 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m_term(r->source_name)));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->source_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m_term(r->computer_name)));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->computer_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -137,7 +137,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record_tdb(struct ndr_push *ndr, in
+ 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * ndr_size_string_array(r->strings, r->num_of_strings, LIBNDR_FLAG_STR_NULLTERM)));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				for (cntr_strings_0 = 0; cntr_strings_0 < r->num_of_strings; cntr_strings_0++) {
+ 					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->strings[cntr_strings_0]));
+ 				}
+@@ -185,14 +185,14 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record_tdb(struct ndr_pull *ndr, in
+ 			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->source_name_len));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->source_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->computer_name_len));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->computer_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -201,7 +201,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record_tdb(struct ndr_pull *ndr, in
+ 			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->strings_len));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_PULL_ALLOC_N(ndr, r->strings, r->num_of_strings);
+ 				_mem_save_strings_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ 				NDR_PULL_SET_MEM_CTX(ndr, r->strings, 0);
+@@ -385,13 +385,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_EVENTLOGRECORD(struct ndr_push *ndr, int ndr
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 56 + 2 * (strlen_m_term(r->SourceName) + strlen_m_term(r->Computername)) + ndr_size_dom_sid0(&r->UserSid, ndr->flags) + (2 * ndr_size_string_array(r->Strings, r->NumStrings, LIBNDR_FLAG_STR_NULLTERM))));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->SourceName));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->Computername));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -408,7 +408,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_EVENTLOGRECORD(struct ndr_push *ndr, int ndr
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			for (cntr_Strings_0 = 0; cntr_Strings_0 < r->NumStrings; cntr_Strings_0++) {
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->Strings[cntr_Strings_0]));
+ 			}
+@@ -463,13 +463,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EVENTLOGRECORD(struct ndr_pull *ndr, int ndr
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->DataOffset));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->SourceName));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->Computername));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -486,7 +486,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EVENTLOGRECORD(struct ndr_pull *ndr, int ndr
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_PULL_ALLOC_N(ndr, r->Strings, r->NumStrings);
+ 			_mem_save_Strings_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ 			NDR_PULL_SET_MEM_CTX(ndr, r->Strings, 0);
+diff --git a/librpc/gen_ndr/ndr_misc.c b/librpc/gen_ndr/ndr_misc.c
+index 1f4d0c9..99cb045 100644
+--- a/librpc/gen_ndr/ndr_misc.c
++++ b/librpc/gen_ndr/ndr_misc.c
+@@ -226,7 +226,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_fl
+ 				case REG_SZ: {
+ 					{
+ 						uint32_t _flags_save_string = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+ 						ndr->flags = _flags_save_string;
+ 					}
+@@ -235,7 +235,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_fl
+ 				case REG_EXPAND_SZ: {
+ 					{
+ 						uint32_t _flags_save_string = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+ 						ndr->flags = _flags_save_string;
+ 					}
+@@ -266,7 +266,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_fl
+ 				case REG_MULTI_SZ: {
+ 					{
+ 						uint32_t _flags_save_string_array = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+ 						ndr->flags = _flags_save_string_array;
+ 					}
+@@ -333,7 +333,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_fl
+ 				case REG_SZ: {
+ 					{
+ 						uint32_t _flags_save_string = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+ 						ndr->flags = _flags_save_string;
+ 					}
+@@ -342,7 +342,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_fl
+ 				case REG_EXPAND_SZ: {
+ 					{
+ 						uint32_t _flags_save_string = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+ 						ndr->flags = _flags_save_string;
+ 					}
+@@ -373,7 +373,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_fl
+ 				case REG_MULTI_SZ: {
+ 					{
+ 						uint32_t _flags_save_string_array = ndr->flags;
+-						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 						NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+ 						ndr->flags = _flags_save_string_array;
+ 					}
+diff --git a/librpc/gen_ndr/ndr_nbt.c b/librpc/gen_ndr/ndr_nbt.c
+index 491dfd6..bffb25a 100644
+--- a/librpc/gen_ndr/ndr_nbt.c
++++ b/librpc/gen_ndr/ndr_nbt.c
+@@ -1749,19 +1749,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
+ 			NDR_CHECK(ndr_push_netlogon_command(ndr, NDR_SCALARS, r->command));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -1787,19 +1787,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
+ 			NDR_CHECK(ndr_pull_netlogon_command(ndr, NDR_SCALARS, &r->command));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->domain));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -1844,19 +1844,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_NETLOGON_SAM_LOGON_RESPONSE(struct ndr_push
+ 			NDR_CHECK(ndr_push_netlogon_command(ndr, NDR_SCALARS, r->command));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->pdc_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -1889,19 +1889,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_NETLOGON_SAM_LOGON_RESPONSE(struct ndr_pull
+ 			NDR_CHECK(ndr_pull_netlogon_command(ndr, NDR_SCALARS, &r->command));
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->pdc_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->domain_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -2082,7 +2082,7 @@ static enum ndr_err_code ndr_push_nbt_netlogon_query_for_pdc(struct ndr_push *nd
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unicode_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2120,7 +2120,7 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_query_for_pdc(struct ndr_pull *nd
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unicode_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2170,13 +2170,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_nbt_netlogon_response_from_pdc(struct ndr_pu
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unicode_pdc_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -2214,13 +2214,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_nbt_netlogon_response_from_pdc(struct ndr_pu
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unicode_pdc_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+ 			{
+ 				uint32_t _flags_save_string = ndr->flags;
+-				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->domain_name));
+ 				ndr->flags = _flags_save_string;
+ 			}
+@@ -2323,13 +2323,13 @@ static enum ndr_err_code ndr_push_NETLOGON_DB_CHANGE(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unicode_pdc_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unicode_domain));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2383,13 +2383,13 @@ static enum ndr_err_code ndr_pull_NETLOGON_DB_CHANGE(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unicode_pdc_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unicode_domain));
+ 			ndr->flags = _flags_save_string;
+ 		}
+diff --git a/librpc/gen_ndr/ndr_netlogon.c b/librpc/gen_ndr/ndr_netlogon.c
+index 8773439..0ea551d 100644
+--- a/librpc/gen_ndr/ndr_netlogon.c
++++ b/librpc/gen_ndr/ndr_netlogon.c
+@@ -6712,7 +6712,7 @@ static enum ndr_err_code ndr_push_netr_ChangeLogObject(struct ndr_push *ndr, int
+ 			case NETR_CHANGELOG_NAME_INCLUDED: {
+ 				{
+ 					uint32_t _flags_save_string = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->object_name));
+ 					ndr->flags = _flags_save_string;
+ 				}
+@@ -6754,7 +6754,7 @@ static enum ndr_err_code ndr_pull_netr_ChangeLogObject(struct ndr_pull *ndr, int
+ 			case NETR_CHANGELOG_NAME_INCLUDED: {
+ 				{
+ 					uint32_t _flags_save_string = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->object_name));
+ 					ndr->flags = _flags_save_string;
+ 				}
+@@ -7519,7 +7519,7 @@ static enum ndr_err_code ndr_push_netr_OsVersionInfoEx(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->PlatformId));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_push *_ndr_CSDVersion;
+ 				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_CSDVersion, 0, 256));
+@@ -7551,7 +7551,7 @@ static enum ndr_err_code ndr_pull_netr_OsVersionInfoEx(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->PlatformId));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_pull *_ndr_CSDVersion;
+ 				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_CSDVersion, 0, 256));
+diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
+index af555d7..41f994b 100644
+--- a/librpc/gen_ndr/ndr_spoolss.c
++++ b/librpc/gen_ndr/ndr_spoolss.c
+@@ -314,13 +314,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			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_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -356,7 +356,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
+@@ -366,7 +366,7 @@ _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);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->servername) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
+@@ -388,7 +388,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
+ 			if (_ptr_printername) {
+ 				NDR_PULL_ALLOC(ndr, r->printername);
+@@ -400,7 +400,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
+ 			if (_ptr_servername) {
+ 				NDR_PULL_ALLOC(ndr, r->servername);
+@@ -442,7 +442,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -457,7 +457,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->servername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1286,19 +1286,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->comment));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -1307,7 +1307,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
+@@ -1317,7 +1317,7 @@ _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);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
+@@ -1327,7 +1327,7 @@ _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);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->comment) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->comment));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->comment));
+@@ -1352,7 +1352,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
+ 			if (_ptr_description) {
+ 				NDR_PULL_ALLOC(ndr, r->description);
+@@ -1364,7 +1364,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
+ 			if (_ptr_name) {
+ 				NDR_PULL_ALLOC(ndr, r->name);
+@@ -1376,7 +1376,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
+ 			if (_ptr_comment) {
+ 				NDR_PULL_ALLOC(ndr, r->comment);
+@@ -1391,7 +1391,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1406,7 +1406,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1421,7 +1421,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->comment) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1501,7 +1501,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
+ 			if (_ptr_servername) {
+ 				NDR_PULL_ALLOC(ndr, r->servername);
+@@ -1513,7 +1513,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
+ 			if (_ptr_printername) {
+ 				NDR_PULL_ALLOC(ndr, r->printername);
+@@ -1525,7 +1525,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
+ 			if (_ptr_sharename) {
+ 				NDR_PULL_ALLOC(ndr, r->sharename);
+@@ -1537,7 +1537,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
+ 			if (_ptr_portname) {
+ 				NDR_PULL_ALLOC(ndr, r->portname);
+@@ -1549,7 +1549,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_drivername));
+ 			if (_ptr_drivername) {
+ 				NDR_PULL_ALLOC(ndr, r->drivername);
+@@ -1561,7 +1561,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
+ 			if (_ptr_comment) {
+ 				NDR_PULL_ALLOC(ndr, r->comment);
+@@ -1573,7 +1573,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_location));
+ 			if (_ptr_location) {
+ 				NDR_PULL_ALLOC(ndr, r->location);
+@@ -1597,7 +1597,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sepfile));
+ 			if (_ptr_sepfile) {
+ 				NDR_PULL_ALLOC(ndr, r->sepfile);
+@@ -1609,7 +1609,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printprocessor));
+ 			if (_ptr_printprocessor) {
+ 				NDR_PULL_ALLOC(ndr, r->printprocessor);
+@@ -1621,7 +1621,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
+ 			if (_ptr_datatype) {
+ 				NDR_PULL_ALLOC(ndr, r->datatype);
+@@ -1633,7 +1633,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
+ 			if (_ptr_parameters) {
+ 				NDR_PULL_ALLOC(ndr, r->parameters);
+@@ -1671,7 +1671,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->servername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1686,7 +1686,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1701,7 +1701,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->sharename) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1716,7 +1716,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->portname) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1731,7 +1731,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->drivername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1746,7 +1746,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->comment) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1761,7 +1761,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->location) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1796,7 +1796,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->sepfile) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1811,7 +1811,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printprocessor) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1826,7 +1826,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->datatype) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1841,7 +1841,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->parameters) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2077,13 +2077,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo4(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			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_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2093,7 +2093,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo4(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
+@@ -2103,7 +2103,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo4(struct ndr_push *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->servername) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
+@@ -2125,7 +2125,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
+ 			if (_ptr_printername) {
+ 				NDR_PULL_ALLOC(ndr, r->printername);
+@@ -2137,7 +2137,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
+ 			if (_ptr_servername) {
+ 				NDR_PULL_ALLOC(ndr, r->servername);
+@@ -2153,7 +2153,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2168,7 +2168,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->servername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2216,13 +2216,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo5(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			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_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->portname));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2234,7 +2234,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo5(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
+@@ -2244,7 +2244,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo5(struct ndr_push *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->portname) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->portname));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->portname));
+@@ -2266,7 +2266,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
+ 			if (_ptr_printername) {
+ 				NDR_PULL_ALLOC(ndr, r->printername);
+@@ -2278,7 +2278,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
+ 			if (_ptr_portname) {
+ 				NDR_PULL_ALLOC(ndr, r->portname);
+@@ -2296,7 +2296,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printername) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2311,7 +2311,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->portname) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2424,7 +2424,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo7(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->guid));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -2434,7 +2434,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo7(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->guid) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->guid));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->guid));
+@@ -2454,7 +2454,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo7(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_guid));
+ 			if (_ptr_guid) {
+ 				NDR_PULL_ALLOC(ndr, r->guid);
+@@ -2470,7 +2470,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo7(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->guid) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -2990,37 +2990,37 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -3035,7 +3035,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
+@@ -3045,7 +3045,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
+@@ -3055,7 +3055,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
+@@ -3065,7 +3065,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
+@@ -3075,7 +3075,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
+@@ -3085,7 +3085,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
+@@ -3116,7 +3116,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
+ 			if (_ptr_printer_name) {
+ 				NDR_PULL_ALLOC(ndr, r->printer_name);
+@@ -3128,7 +3128,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
+ 			if (_ptr_server_name) {
+ 				NDR_PULL_ALLOC(ndr, r->server_name);
+@@ -3140,7 +3140,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
+ 			if (_ptr_user_name) {
+ 				NDR_PULL_ALLOC(ndr, r->user_name);
+@@ -3152,7 +3152,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
+ 			if (_ptr_document_name) {
+ 				NDR_PULL_ALLOC(ndr, r->document_name);
+@@ -3164,7 +3164,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
+ 			if (_ptr_data_type) {
+ 				NDR_PULL_ALLOC(ndr, r->data_type);
+@@ -3176,7 +3176,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
+ 			if (_ptr_text_status) {
+ 				NDR_PULL_ALLOC(ndr, r->text_status);
+@@ -3200,7 +3200,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3215,7 +3215,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3230,7 +3230,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3245,7 +3245,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3260,7 +3260,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3275,7 +3275,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3354,55 +3354,55 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->notify_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -3414,7 +3414,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -3439,7 +3439,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
+@@ -3449,7 +3449,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
+@@ -3459,7 +3459,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
+@@ -3469,7 +3469,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
+@@ -3479,7 +3479,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->notify_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->notify_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->notify_name));
+@@ -3489,7 +3489,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
+@@ -3499,7 +3499,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
+@@ -3509,7 +3509,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->parameters) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
+@@ -3519,7 +3519,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -3544,7 +3544,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
+@@ -3602,7 +3602,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
+ 			if (_ptr_printer_name) {
+ 				NDR_PULL_ALLOC(ndr, r->printer_name);
+@@ -3614,7 +3614,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
+ 			if (_ptr_server_name) {
+ 				NDR_PULL_ALLOC(ndr, r->server_name);
+@@ -3626,7 +3626,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
+ 			if (_ptr_user_name) {
+ 				NDR_PULL_ALLOC(ndr, r->user_name);
+@@ -3638,7 +3638,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
+ 			if (_ptr_document_name) {
+ 				NDR_PULL_ALLOC(ndr, r->document_name);
+@@ -3650,7 +3650,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
+ 			if (_ptr_notify_name) {
+ 				NDR_PULL_ALLOC(ndr, r->notify_name);
+@@ -3662,7 +3662,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
+ 			if (_ptr_data_type) {
+ 				NDR_PULL_ALLOC(ndr, r->data_type);
+@@ -3674,7 +3674,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
+ 			if (_ptr_print_processor) {
+ 				NDR_PULL_ALLOC(ndr, r->print_processor);
+@@ -3686,7 +3686,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
+ 			if (_ptr_parameters) {
+ 				NDR_PULL_ALLOC(ndr, r->parameters);
+@@ -3698,7 +3698,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -3722,7 +3722,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
+ 			if (_ptr_text_status) {
+ 				NDR_PULL_ALLOC(ndr, r->text_status);
+@@ -3762,7 +3762,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3777,7 +3777,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3792,7 +3792,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3807,7 +3807,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3822,7 +3822,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->notify_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3837,7 +3837,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3852,7 +3852,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3867,7 +3867,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->parameters) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3882,7 +3882,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -3917,7 +3917,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4099,55 +4099,55 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->notify_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -4159,7 +4159,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -4185,7 +4185,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
+@@ -4195,7 +4195,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
+@@ -4205,7 +4205,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
+@@ -4215,7 +4215,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
+@@ -4225,7 +4225,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->notify_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->notify_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->notify_name));
+@@ -4235,7 +4235,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
+@@ -4245,7 +4245,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
+@@ -4255,7 +4255,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->parameters) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
+@@ -4265,7 +4265,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -4290,7 +4290,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
+@@ -4348,7 +4348,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
+ 			if (_ptr_printer_name) {
+ 				NDR_PULL_ALLOC(ndr, r->printer_name);
+@@ -4360,7 +4360,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
+ 			if (_ptr_server_name) {
+ 				NDR_PULL_ALLOC(ndr, r->server_name);
+@@ -4372,7 +4372,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
+ 			if (_ptr_user_name) {
+ 				NDR_PULL_ALLOC(ndr, r->user_name);
+@@ -4384,7 +4384,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
+ 			if (_ptr_document_name) {
+ 				NDR_PULL_ALLOC(ndr, r->document_name);
+@@ -4396,7 +4396,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
+ 			if (_ptr_notify_name) {
+ 				NDR_PULL_ALLOC(ndr, r->notify_name);
+@@ -4408,7 +4408,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
+ 			if (_ptr_data_type) {
+ 				NDR_PULL_ALLOC(ndr, r->data_type);
+@@ -4420,7 +4420,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
+ 			if (_ptr_print_processor) {
+ 				NDR_PULL_ALLOC(ndr, r->print_processor);
+@@ -4432,7 +4432,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
+ 			if (_ptr_parameters) {
+ 				NDR_PULL_ALLOC(ndr, r->parameters);
+@@ -4444,7 +4444,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -4468,7 +4468,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
+ 			if (_ptr_text_status) {
+ 				NDR_PULL_ALLOC(ndr, r->text_status);
+@@ -4509,7 +4509,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->printer_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4524,7 +4524,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->server_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4539,7 +4539,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->user_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4554,7 +4554,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->document_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4569,7 +4569,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->notify_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4584,7 +4584,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_type) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4599,7 +4599,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4614,7 +4614,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->parameters) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4629,7 +4629,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -4664,7 +4664,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->text_status) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -7974,7 +7974,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_StringArray(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (ndr_size_spoolss_StringArray(r, ndr->iconv_convenience, ndr->flags) - 4) / 2));
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -7992,7 +7992,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_StringArray(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size));
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -10468,7 +10468,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo1(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -10477,7 +10477,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo1(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -10497,7 +10497,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo1(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -10512,7 +10512,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo1(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10554,31 +10554,31 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -10587,7 +10587,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -10597,7 +10597,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -10607,7 +10607,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -10617,7 +10617,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -10627,7 +10627,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -10656,7 +10656,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -10668,7 +10668,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -10680,7 +10680,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -10692,7 +10692,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -10704,7 +10704,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -10719,7 +10719,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10734,7 +10734,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10749,7 +10749,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10764,7 +10764,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10779,7 +10779,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -10846,55 +10846,55 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -10903,7 +10903,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -10913,7 +10913,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -10923,7 +10923,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -10933,7 +10933,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -10943,7 +10943,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -10953,7 +10953,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
+@@ -10963,7 +10963,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
+@@ -10973,7 +10973,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -10983,7 +10983,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
+@@ -11020,7 +11020,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -11032,7 +11032,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -11044,7 +11044,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -11056,7 +11056,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -11068,7 +11068,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -11080,7 +11080,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
+ 			if (_ptr_help_file) {
+ 				NDR_PULL_ALLOC(ndr, r->help_file);
+@@ -11092,7 +11092,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
+ 			if (_ptr_dependent_files) {
+ 				NDR_PULL_ALLOC(ndr, r->dependent_files);
+@@ -11104,7 +11104,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -11116,7 +11116,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
+ 			if (_ptr_default_datatype) {
+ 				NDR_PULL_ALLOC(ndr, r->default_datatype);
+@@ -11131,7 +11131,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11146,7 +11146,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11161,7 +11161,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11176,7 +11176,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11191,7 +11191,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11206,7 +11206,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11221,7 +11221,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11236,7 +11236,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11251,7 +11251,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11342,61 +11342,61 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -11405,7 +11405,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -11415,7 +11415,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -11425,7 +11425,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -11435,7 +11435,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -11445,7 +11445,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -11455,7 +11455,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
+@@ -11465,7 +11465,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
+@@ -11475,7 +11475,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -11485,7 +11485,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
+@@ -11495,7 +11495,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
+@@ -11534,7 +11534,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -11546,7 +11546,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -11558,7 +11558,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -11570,7 +11570,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -11582,7 +11582,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -11594,7 +11594,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
+ 			if (_ptr_help_file) {
+ 				NDR_PULL_ALLOC(ndr, r->help_file);
+@@ -11606,7 +11606,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
+ 			if (_ptr_dependent_files) {
+ 				NDR_PULL_ALLOC(ndr, r->dependent_files);
+@@ -11618,7 +11618,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -11630,7 +11630,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
+ 			if (_ptr_default_datatype) {
+ 				NDR_PULL_ALLOC(ndr, r->default_datatype);
+@@ -11642,7 +11642,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
+ 			if (_ptr_previous_names) {
+ 				NDR_PULL_ALLOC(ndr, r->previous_names);
+@@ -11657,7 +11657,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11672,7 +11672,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11687,7 +11687,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11702,7 +11702,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11717,7 +11717,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11732,7 +11732,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11747,7 +11747,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11762,7 +11762,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11777,7 +11777,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11792,7 +11792,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -11889,31 +11889,31 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -11925,7 +11925,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -11935,7 +11935,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -11945,7 +11945,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -11955,7 +11955,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -11965,7 +11965,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -11994,7 +11994,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -12006,7 +12006,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -12018,7 +12018,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -12030,7 +12030,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -12042,7 +12042,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -12060,7 +12060,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12075,7 +12075,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12090,7 +12090,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12105,7 +12105,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12120,7 +12120,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12190,61 +12190,61 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -12252,25 +12252,25 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_url));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->hardware_id));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->provider));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -12279,7 +12279,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -12289,7 +12289,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -12299,7 +12299,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -12309,7 +12309,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -12319,7 +12319,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -12329,7 +12329,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
+@@ -12339,7 +12339,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
+@@ -12349,7 +12349,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -12359,7 +12359,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
+@@ -12369,7 +12369,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
+@@ -12379,7 +12379,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_name));
+@@ -12389,7 +12389,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_url) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_url));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_url));
+@@ -12399,7 +12399,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->hardware_id) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->hardware_id));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->hardware_id));
+@@ -12409,7 +12409,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->provider) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->provider));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->provider));
+@@ -12456,7 +12456,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -12468,7 +12468,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -12480,7 +12480,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -12492,7 +12492,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -12504,7 +12504,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -12516,7 +12516,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
+ 			if (_ptr_help_file) {
+ 				NDR_PULL_ALLOC(ndr, r->help_file);
+@@ -12528,7 +12528,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
+ 			if (_ptr_dependent_files) {
+ 				NDR_PULL_ALLOC(ndr, r->dependent_files);
+@@ -12540,7 +12540,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -12552,7 +12552,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
+ 			if (_ptr_default_datatype) {
+ 				NDR_PULL_ALLOC(ndr, r->default_datatype);
+@@ -12564,7 +12564,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
+ 			if (_ptr_previous_names) {
+ 				NDR_PULL_ALLOC(ndr, r->previous_names);
+@@ -12578,7 +12578,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
+ 			if (_ptr_manufacturer_name) {
+ 				NDR_PULL_ALLOC(ndr, r->manufacturer_name);
+@@ -12590,7 +12590,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
+ 			if (_ptr_manufacturer_url) {
+ 				NDR_PULL_ALLOC(ndr, r->manufacturer_url);
+@@ -12602,7 +12602,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
+ 			if (_ptr_hardware_id) {
+ 				NDR_PULL_ALLOC(ndr, r->hardware_id);
+@@ -12614,7 +12614,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
+ 			if (_ptr_provider) {
+ 				NDR_PULL_ALLOC(ndr, r->provider);
+@@ -12629,7 +12629,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12644,7 +12644,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12659,7 +12659,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12674,7 +12674,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12689,7 +12689,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12704,7 +12704,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12719,7 +12719,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12734,7 +12734,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12749,7 +12749,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12764,7 +12764,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12779,7 +12779,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12794,7 +12794,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_url) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12809,7 +12809,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->hardware_id) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12824,7 +12824,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->provider) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -12948,19 +12948,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo7(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->inf_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->install_source_root));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -12969,7 +12969,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo7(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -12979,7 +12979,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo7(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->inf_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->inf_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->inf_name));
+@@ -12989,7 +12989,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo7(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->install_source_root) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->install_source_root));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->install_source_root));
+@@ -13015,7 +13015,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -13027,7 +13027,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_inf_name));
+ 			if (_ptr_inf_name) {
+ 				NDR_PULL_ALLOC(ndr, r->inf_name);
+@@ -13039,7 +13039,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_install_source_root));
+ 			if (_ptr_install_source_root) {
+ 				NDR_PULL_ALLOC(ndr, r->install_source_root);
+@@ -13054,7 +13054,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13069,7 +13069,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->inf_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13084,7 +13084,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->install_source_root) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13140,61 +13140,61 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -13202,56 +13202,56 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_url));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->hardware_id));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->provider));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->vendor_setup));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->color_profiles));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->inf_path));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->printer_driver_attributes));
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->core_driver_dependencies));
+ 			ndr->flags = _flags_save_string_array;
+ 		}
+@@ -13262,7 +13262,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
+@@ -13272,7 +13272,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
+@@ -13282,7 +13282,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
+@@ -13292,7 +13292,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
+@@ -13302,7 +13302,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
+@@ -13312,7 +13312,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
+@@ -13322,7 +13322,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
+@@ -13332,7 +13332,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -13342,7 +13342,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
+@@ -13352,7 +13352,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
+@@ -13362,7 +13362,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_name));
+@@ -13372,7 +13372,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_url) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_url));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_url));
+@@ -13382,7 +13382,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->hardware_id) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->hardware_id));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->hardware_id));
+@@ -13392,7 +13392,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->provider) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->provider));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->provider));
+@@ -13402,7 +13402,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
+@@ -13412,7 +13412,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->vendor_setup) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->vendor_setup));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->vendor_setup));
+@@ -13422,7 +13422,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->color_profiles) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->color_profiles));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->color_profiles));
+@@ -13432,7 +13432,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->inf_path) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->inf_path));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->inf_path));
+@@ -13442,7 +13442,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->core_driver_dependencies) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->core_driver_dependencies));
+ 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->core_driver_dependencies));
+@@ -13499,7 +13499,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
+ 			if (_ptr_driver_name) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_name);
+@@ -13511,7 +13511,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+ 			if (_ptr_architecture) {
+ 				NDR_PULL_ALLOC(ndr, r->architecture);
+@@ -13523,7 +13523,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
+ 			if (_ptr_driver_path) {
+ 				NDR_PULL_ALLOC(ndr, r->driver_path);
+@@ -13535,7 +13535,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
+ 			if (_ptr_data_file) {
+ 				NDR_PULL_ALLOC(ndr, r->data_file);
+@@ -13547,7 +13547,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
+ 			if (_ptr_config_file) {
+ 				NDR_PULL_ALLOC(ndr, r->config_file);
+@@ -13559,7 +13559,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
+ 			if (_ptr_help_file) {
+ 				NDR_PULL_ALLOC(ndr, r->help_file);
+@@ -13571,7 +13571,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
+ 			if (_ptr_dependent_files) {
+ 				NDR_PULL_ALLOC(ndr, r->dependent_files);
+@@ -13583,7 +13583,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -13595,7 +13595,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
+ 			if (_ptr_default_datatype) {
+ 				NDR_PULL_ALLOC(ndr, r->default_datatype);
+@@ -13607,7 +13607,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
+ 			if (_ptr_previous_names) {
+ 				NDR_PULL_ALLOC(ndr, r->previous_names);
+@@ -13621,7 +13621,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
+ 			if (_ptr_manufacturer_name) {
+ 				NDR_PULL_ALLOC(ndr, r->manufacturer_name);
+@@ -13633,7 +13633,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
+ 			if (_ptr_manufacturer_url) {
+ 				NDR_PULL_ALLOC(ndr, r->manufacturer_url);
+@@ -13645,7 +13645,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
+ 			if (_ptr_hardware_id) {
+ 				NDR_PULL_ALLOC(ndr, r->hardware_id);
+@@ -13657,7 +13657,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
+ 			if (_ptr_provider) {
+ 				NDR_PULL_ALLOC(ndr, r->provider);
+@@ -13669,7 +13669,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
+ 			if (_ptr_print_processor) {
+ 				NDR_PULL_ALLOC(ndr, r->print_processor);
+@@ -13681,7 +13681,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_vendor_setup));
+ 			if (_ptr_vendor_setup) {
+ 				NDR_PULL_ALLOC(ndr, r->vendor_setup);
+@@ -13693,7 +13693,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_color_profiles));
+ 			if (_ptr_color_profiles) {
+ 				NDR_PULL_ALLOC(ndr, r->color_profiles);
+@@ -13705,7 +13705,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_inf_path));
+ 			if (_ptr_inf_path) {
+ 				NDR_PULL_ALLOC(ndr, r->inf_path);
+@@ -13718,7 +13718,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->printer_driver_attributes));
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_core_driver_dependencies));
+ 			if (_ptr_core_driver_dependencies) {
+ 				NDR_PULL_ALLOC(ndr, r->core_driver_dependencies);
+@@ -13735,7 +13735,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13750,7 +13750,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->architecture) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13765,7 +13765,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->driver_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13780,7 +13780,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->data_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13795,7 +13795,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->config_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13810,7 +13810,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->help_file) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13825,7 +13825,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dependent_files) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13840,7 +13840,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13855,7 +13855,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->default_datatype) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13870,7 +13870,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->previous_names) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13885,7 +13885,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13900,7 +13900,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->manufacturer_url) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13915,7 +13915,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->hardware_id) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13930,7 +13930,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->provider) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13945,7 +13945,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13960,7 +13960,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->vendor_setup) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13975,7 +13975,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->color_profiles) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -13990,7 +13990,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->inf_path) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -14005,7 +14005,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
+ 		}
+ 		{
+ 			uint32_t _flags_save_string_array = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->core_driver_dependencies) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -14188,7 +14188,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverFileInfo(struct ndr_push *ndr,
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->file_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -14199,7 +14199,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverFileInfo(struct ndr_push *ndr,
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->file_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->file_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->file_name));
+@@ -14219,7 +14219,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverFileInfo(struct ndr_pull *ndr,
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_file_name));
+ 			if (_ptr_file_name) {
+ 				NDR_PULL_ALLOC(ndr, r->file_name);
+@@ -14236,7 +14236,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverFileInfo(struct ndr_pull *ndr,
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->file_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -14659,7 +14659,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push
+ 		NDR_CHECK(ndr_push_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->directory_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -14676,7 +14676,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo1(struct ndr_pull
+ 		NDR_CHECK(ndr_pull_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->directory_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -14818,7 +14818,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorInfo1(struct ndr_push
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -14827,7 +14827,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorInfo1(struct ndr_push
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor_name));
+@@ -14847,7 +14847,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorInfo1(struct ndr_pull
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor_name));
+ 			if (_ptr_print_processor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->print_processor_name);
+@@ -14862,7 +14862,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorInfo1(struct ndr_pull
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->print_processor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -15004,7 +15004,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorDirectoryInfo1(struct
+ 		NDR_CHECK(ndr_push_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->directory_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -15021,7 +15021,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorDirectoryInfo1(struct
+ 		NDR_CHECK(ndr_pull_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->directory_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -15427,7 +15427,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_OSVersion(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_push *_ndr_extra_string;
+ 				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
+@@ -15454,7 +15454,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersion(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_pull *_ndr_extra_string;
+ 				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
+@@ -15499,7 +15499,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_OSVersionEx(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_push *_ndr_extra_string;
+ 				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
+@@ -15531,7 +15531,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersionEx(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			{
+ 				struct ndr_pull *_ndr_extra_string;
+ 				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
+@@ -15587,7 +15587,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterData(struct ndr_push *ndr, in
+ 			case REG_SZ: {
+ 				{
+ 					uint32_t _flags_save_string = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+ 					ndr->flags = _flags_save_string;
+ 				}
+@@ -15609,7 +15609,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterData(struct ndr_push *ndr, in
+ 			case REG_MULTI_SZ: {
+ 				{
+ 					uint32_t _flags_save_string_array = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+ 					ndr->flags = _flags_save_string_array;
+ 				}
+@@ -15665,7 +15665,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterData(struct ndr_pull *ndr, in
+ 			case REG_SZ: {
+ 				{
+ 					uint32_t _flags_save_string = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+ 					ndr->flags = _flags_save_string;
+ 				}
+@@ -15687,7 +15687,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterData(struct ndr_pull *ndr, in
+ 			case REG_MULTI_SZ: {
+ 				{
+ 					uint32_t _flags_save_string_array = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+ 					ndr->flags = _flags_save_string_array;
+ 				}
+@@ -15870,7 +15870,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo1(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->form_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -15881,7 +15881,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo1(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->form_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->form_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->form_name));
+@@ -15902,7 +15902,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo1(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
+ 			if (_ptr_form_name) {
+ 				NDR_PULL_ALLOC(ndr, r->form_name);
+@@ -15919,7 +15919,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo1(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->form_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -15988,7 +15988,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->form_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -16003,14 +16003,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_spoolss_FormStringType(ndr, NDR_SCALARS, r->string_type));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->mui_dll));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ressource_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -16021,7 +16021,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->form_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->form_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->form_name));
+@@ -16041,7 +16041,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->mui_dll) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->mui_dll));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->mui_dll));
+@@ -16051,7 +16051,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->display_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
+@@ -16078,7 +16078,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
+ 			if (_ptr_form_name) {
+ 				NDR_PULL_ALLOC(ndr, r->form_name);
+@@ -16105,7 +16105,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_spoolss_FormStringType(ndr, NDR_SCALARS, &r->string_type));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_mui_dll));
+ 			if (_ptr_mui_dll) {
+ 				NDR_PULL_ALLOC(ndr, r->mui_dll);
+@@ -16118,7 +16118,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ressource_id));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
+ 			if (_ptr_display_name) {
+ 				NDR_PULL_ALLOC(ndr, r->display_name);
+@@ -16135,7 +16135,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->form_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -16165,7 +16165,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->mui_dll) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -16180,7 +16180,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->display_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -16762,7 +16762,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo1(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -16771,7 +16771,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo1(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
+@@ -16791,7 +16791,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo1(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
+ 			if (_ptr_port_name) {
+ 				NDR_PULL_ALLOC(ndr, r->port_name);
+@@ -16806,7 +16806,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo1(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -16872,19 +16872,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo2(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -16895,7 +16895,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo2(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
+@@ -16905,7 +16905,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo2(struct ndr_push *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -16915,7 +16915,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo2(struct ndr_push *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
+@@ -16939,7 +16939,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
+ 			if (_ptr_port_name) {
+ 				NDR_PULL_ALLOC(ndr, r->port_name);
+@@ -16951,7 +16951,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -16963,7 +16963,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
+ 			if (_ptr_description) {
+ 				NDR_PULL_ALLOC(ndr, r->description);
+@@ -16980,7 +16980,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -16995,7 +16995,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17010,7 +17010,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17128,7 +17128,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo3(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_spoolss_PortStatus(ndr, NDR_SCALARS, r->status));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->status_string));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -17138,7 +17138,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo3(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->status_string) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->status_string));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->status_string));
+@@ -17159,7 +17159,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo3(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_spoolss_PortStatus(ndr, NDR_SCALARS, &r->status));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_status_string));
+ 			if (_ptr_status_string) {
+ 				NDR_PULL_ALLOC(ndr, r->status_string);
+@@ -17175,7 +17175,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo3(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->status_string) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17218,7 +17218,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfoFF(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -17228,7 +17228,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfoFF(struct ndr_push *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
+@@ -17248,7 +17248,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfoFF(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
+ 			if (_ptr_port_name) {
+ 				NDR_PULL_ALLOC(ndr, r->port_name);
+@@ -17264,7 +17264,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfoFF(struct ndr_pull *ndr, int
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->port_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17479,7 +17479,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo1(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -17488,7 +17488,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo1(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -17508,7 +17508,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo1(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -17523,7 +17523,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo1(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17564,19 +17564,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo2(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->environment));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dll_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -17585,7 +17585,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo2(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
+@@ -17595,7 +17595,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo2(struct ndr_push *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->environment) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->environment));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->environment));
+@@ -17605,7 +17605,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo2(struct ndr_push *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dll_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dll_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dll_name));
+@@ -17629,7 +17629,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
+ 			if (_ptr_monitor_name) {
+ 				NDR_PULL_ALLOC(ndr, r->monitor_name);
+@@ -17641,7 +17641,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
+ 			if (_ptr_environment) {
+ 				NDR_PULL_ALLOC(ndr, r->environment);
+@@ -17653,7 +17653,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dll_name));
+ 			if (_ptr_dll_name) {
+ 				NDR_PULL_ALLOC(ndr, r->dll_name);
+@@ -17668,7 +17668,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->monitor_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17683,7 +17683,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->environment) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17698,7 +17698,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->dll_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -17876,7 +17876,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcDataTypesInfo1(struct ndr_p
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->name_array));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -17885,7 +17885,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcDataTypesInfo1(struct ndr_p
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->name_array) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->name_array));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name_array));
+@@ -17905,7 +17905,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo1(struct ndr_p
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name_array));
+ 			if (_ptr_name_array) {
+ 				NDR_PULL_ALLOC(ndr, r->name_array);
+@@ -17920,7 +17920,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo1(struct ndr_p
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->name_array) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -19526,7 +19526,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterEnumValues(struct ndr_push *n
+ 		NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -19534,18 +19534,18 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterEnumValues(struct ndr_push *n
+ 		NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->type));
+ 		{
+ 			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type));
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data));
+ 			ndr->flags = _flags_save_DATA_BLOB;
+ 		}
+-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data->length));
++		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data?r->data->length:0));
+ 		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
+ 	}
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->value_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->value_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->value_name));
+@@ -19555,14 +19555,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterEnumValues(struct ndr_push *n
+ 		}
+ 		{
+ 			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type));
+ 			if (r->data) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data));
+ 				{
+ 					struct ndr_push *_ndr_data;
+-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_data, 0, r->data->length));
++					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_data, 0, r->data?r->data->length:0));
+ 					NDR_CHECK(ndr_push_DATA_BLOB(_ndr_data, NDR_SCALARS, *r->data));
+-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_data, 0, r->data->length));
++					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_data, 0, r->data?r->data->length:0));
+ 				}
+ 				NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data));
+ 			}
+@@ -19585,7 +19585,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
+ 		NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value_name));
+ 			if (_ptr_value_name) {
+ 				NDR_PULL_ALLOC(ndr, r->value_name);
+@@ -19599,7 +19599,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
+ 		NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->type));
+ 		{
+ 			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type));
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
+ 			if (_ptr_data) {
+ 				NDR_PULL_ALLOC(ndr, r->data);
+@@ -19616,7 +19616,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
+ 		NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->value_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -19631,7 +19631,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
+ 		}
+ 		{
+ 			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type));
+ 			if (r->data) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -19672,7 +19672,7 @@ _PUBLIC_ void ndr_print_spoolss_PrinterEnumValues(struct ndr_print *ndr, const c
+ 		ndr_print_DATA_BLOB(ndr, "data", *r->data);
+ 	}
+ 	ndr->depth--;
+-	ndr_print_uint32(ndr, "data_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->data->length:r->data_length);
++	ndr_print_uint32(ndr, "data_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->data?r->data->length:0:r->data_length);
+ 	ndr->depth--;
+ }
+ 
+@@ -19696,7 +19696,7 @@ static enum ndr_err_code ndr_push_spoolss_KeyNames(struct ndr_push *ndr, int ndr
+ 			default: {
+ 				{
+ 					uint32_t _flags_save_string_array = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+ 					ndr->flags = _flags_save_string_array;
+ 				}
+@@ -19737,7 +19737,7 @@ static enum ndr_err_code ndr_pull_spoolss_KeyNames(struct ndr_pull *ndr, int ndr
+ 			default: {
+ 				{
+ 					uint32_t _flags_save_string_array = ndr->flags;
+-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 					NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+ 					ndr->flags = _flags_save_string_array;
+ 				}
+@@ -19980,7 +19980,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorUi(struct ndr_push *ndr, int
+ 		NDR_CHECK(ndr_push_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dll_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -19997,7 +19997,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorUi(struct ndr_pull *ndr, int
+ 		NDR_CHECK(ndr_pull_align(ndr, 4));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dll_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+diff --git a/librpc/gen_ndr/ndr_svcctl.c b/librpc/gen_ndr/ndr_svcctl.c
+index a1cb7c7..e67d793 100644
+--- a/librpc/gen_ndr/ndr_svcctl.c
++++ b/librpc/gen_ndr/ndr_svcctl.c
+@@ -226,13 +226,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, i
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -242,7 +242,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->service_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
+@@ -252,7 +252,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->display_name) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
+@@ -274,7 +274,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
+ 			if (_ptr_service_name) {
+ 				NDR_PULL_ALLOC(ndr, r->service_name);
+@@ -286,7 +286,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
+ 			if (_ptr_display_name) {
+ 				NDR_PULL_ALLOC(ndr, r->display_name);
+@@ -302,7 +302,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->service_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -317,7 +317,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->display_name) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1016,7 +1016,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, in
+ 		NDR_CHECK(ndr_push_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -1025,7 +1025,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
+@@ -1045,7 +1045,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, in
+ 		NDR_CHECK(ndr_pull_align(ndr, 5));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
+ 			if (_ptr_description) {
+ 				NDR_PULL_ALLOC(ndr, r->description);
+@@ -1060,7 +1060,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, in
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->description) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1165,13 +1165,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
+ 			ndr->flags = _flags_save_string;
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
+ 			ndr->flags = _flags_save_string;
+ 		}
+@@ -1182,7 +1182,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->rebootmsg) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->rebootmsg));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
+@@ -1192,7 +1192,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->command) {
+ 				NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->command));
+ 				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
+@@ -1227,7 +1227,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
+ 			if (_ptr_rebootmsg) {
+ 				NDR_PULL_ALLOC(ndr, r->rebootmsg);
+@@ -1239,7 +1239,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
+ 			if (_ptr_command) {
+ 				NDR_PULL_ALLOC(ndr, r->command);
+@@ -1265,7 +1265,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
+ 	if (ndr_flags & NDR_BUFFERS) {
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->rebootmsg) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+@@ -1280,7 +1280,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
+ 		}
+ 		{
+ 			uint32_t _flags_save_string = ndr->flags;
+-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
++			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
+ 			if (r->command) {
+ 				uint32_t _relative_save_offset;
+ 				_relative_save_offset = ndr->offset;
+diff --git a/librpc/gen_ndr/netlogon.h b/librpc/gen_ndr/netlogon.h
+index 268790e..207bc2c 100644
+--- a/librpc/gen_ndr/netlogon.h
++++ b/librpc/gen_ndr/netlogon.h
+@@ -800,7 +800,7 @@ enum SyncStateEnum
+ 
+ union netr_ChangeLogObject {
+ 	struct dom_sid object_sid;/* [case(NETR_CHANGELOG_SID_INCLUDED)] */
+-	const char * object_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(NETR_CHANGELOG_NAME_INCLUDED)] */
++	const char * object_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2),case(NETR_CHANGELOG_NAME_INCLUDED)] */
+ }/* [nodiscriminant] */;
+ 
+ struct netr_ChangeLogEntry {
+@@ -931,7 +931,7 @@ struct netr_OsVersionInfoEx {
+ 	uint32_t MinorVersion;
+ 	uint32_t BuildNumber;
+ 	uint32_t PlatformId;
+-	const char * CSDVersion;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * CSDVersion;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint16_t ServicePackMajor;
+ 	uint16_t ServicePackMinor;
+ 	uint16_t SuiteMask;
+diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
+index fc7114a..ef8c63e 100644
+--- a/librpc/gen_ndr/spoolss.h
++++ b/librpc/gen_ndr/spoolss.h
+@@ -244,8 +244,8 @@ enum spoolss_MinorVersion
+ #define JOB_STATUS_COMPLETE ( 0x00001000 )
+ 
+ struct spoolss_PrinterInfo0 {
+-	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t cjobs;
+ 	uint32_t total_jobs;
+ 	uint32_t total_bytes;
+@@ -804,24 +804,24 @@ struct spoolss_DeviceMode {
+ 
+ struct spoolss_PrinterInfo1 {
+ 	uint32_t flags;
+-	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_PrinterInfo2 {
+-	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * sharename;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * drivername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * location;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * sharename;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * drivername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * location;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+-	const char * sepfile;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * printprocessor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * sepfile;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * printprocessor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ 	uint32_t attributes;
+ 	uint32_t priority;/* [range(0,99)] */
+@@ -838,14 +838,14 @@ struct spoolss_PrinterInfo3 {
+ }/* [gensize,public] */;
+ 
+ struct spoolss_PrinterInfo4 {
+-	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t attributes;
+ }/* [gensize,public] */;
+ 
+ struct spoolss_PrinterInfo5 {
+-	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t attributes;
+ 	uint32_t device_not_selected_timeout;
+ 	uint32_t transmission_retry_timeout;
+@@ -863,7 +863,7 @@ struct spoolss_PrinterInfo6 {
+ #define DSPRINT_PENDING ( 0x80000000 )
+ 
+ struct spoolss_PrinterInfo7 {
+-	const char * guid;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * guid;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t action;
+ }/* [gensize,public] */;
+ 
+@@ -891,12 +891,12 @@ struct spoolss_DevmodeContainer {
+ 
+ struct spoolss_JobInfo1 {
+ 	uint32_t job_id;
+-	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t status;
+ 	uint32_t priority;/* [range(0,99)] */
+ 	uint32_t position;
+@@ -907,17 +907,17 @@ struct spoolss_JobInfo1 {
+ 
+ struct spoolss_JobInfo2 {
+ 	uint32_t job_id;
+-	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * notify_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * notify_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+-	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ 	uint32_t status;
+ 	uint32_t priority;/* [range(0,99)] */
+@@ -939,17 +939,17 @@ struct spoolss_JobInfo3 {
+ 
+ struct spoolss_JobInfo4 {
+ 	uint32_t job_id;
+-	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * notify_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * notify_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+-	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ 	uint32_t status;
+ 	uint32_t priority;/* [range(0,99)] */
+@@ -1216,7 +1216,7 @@ struct spoolss_SetPrinterInfoCtr {
+ 
+ struct spoolss_StringArray {
+ 	uint32_t _ndr_size;/* [value((ndr_size_spoolss_StringArray(r,ndr->iconv_convenience,ndr->flags)-4)/2)] */
+-	const char ** string;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char ** string;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [public] */;
+ 
+ struct spoolss_AddDriverInfo1 {
+@@ -1363,52 +1363,52 @@ struct spoolss_AddDriverInfoCtr {
+ };
+ 
+ struct spoolss_DriverInfo1 {
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo2 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo3 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo4 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo5 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t driver_attributes;
+ 	uint32_t config_version;
+ 	uint32_t driver_version;
+@@ -1416,56 +1416,56 @@ struct spoolss_DriverInfo5 {
+ 
+ struct spoolss_DriverInfo6 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	NTTIME driver_date;
+ 	uint64_t driver_version;
+-	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo7 {
+ 	uint32_t size;
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * inf_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * install_source_root;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * inf_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * install_source_root;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_DriverInfo8 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	NTTIME driver_date;
+ 	uint64_t driver_version;
+-	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * vendor_setup;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** color_profiles;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * inf_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * print_processor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * vendor_setup;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** color_profiles;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * inf_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t printer_driver_attributes;
+-	const char ** core_driver_dependencies;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char ** core_driver_dependencies;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	NTTIME min_inbox_driver_ver_date;
+ 	uint64_t min_inbox_driver_ver_version;
+ }/* [gensize,public] */;
+@@ -1490,26 +1490,26 @@ enum spoolss_DriverFileType
+ ;
+ 
+ struct spoolss_DriverFileInfo {
+-	const char * file_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * file_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	enum spoolss_DriverFileType file_type;
+ 	uint32_t file_version;
+ }/* [public] */;
+ 
+ struct spoolss_DriverInfo101 {
+ 	enum spoolss_DriverOSVersion version;
+-	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	struct spoolss_DriverFileInfo *file_info;/* [relative,size_is(file_count)] */
++	const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	struct spoolss_DriverFileInfo *file_info;/* [relative,flag(LIBNDR_FLAG_ALIGN4),size_is(file_count)] */
+ 	uint32_t file_count;
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	NTTIME driver_date;
+ 	uint64_t driver_version;
+-	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,nopush,public,nopull] */;
+ 
+ union spoolss_DriverInfo {
+@@ -1525,7 +1525,7 @@ union spoolss_DriverInfo {
+ }/* [gensize,relative_base,nodiscriminant,public,flag(LIBNDR_FLAG_RELATIVE_REVERSE)] */;
+ 
+ struct spoolss_DriverDirectoryInfo1 {
+-	const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ union spoolss_DriverDirectoryInfo {
+@@ -1533,7 +1533,7 @@ union spoolss_DriverDirectoryInfo {
+ }/* [gensize,relative_base,nodiscriminant,public,flag(LIBNDR_FLAG_RELATIVE_REVERSE)] */;
+ 
+ struct spoolss_PrintProcessorInfo1 {
+-	const char * print_processor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * print_processor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ union spoolss_PrintProcessorInfo {
+@@ -1541,7 +1541,7 @@ union spoolss_PrintProcessorInfo {
+ }/* [relative_base,public,nodiscriminant,flag(LIBNDR_FLAG_RELATIVE_REVERSE)] */;
+ 
+ struct spoolss_PrintProcessorDirectoryInfo1 {
+-	const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ union spoolss_PrintProcessorDirectoryInfo {
+@@ -1564,7 +1564,7 @@ struct spoolss_OSVersion {
+ 	uint32_t minor;
+ 	uint32_t build;
+ 	uint32_t platform_id;/* [value(2)] */
+-	const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_OSVersionEx {
+@@ -1573,7 +1573,7 @@ struct spoolss_OSVersionEx {
+ 	uint32_t minor;
+ 	uint32_t build;
+ 	uint32_t platform_id;/* [value(2)] */
+-	const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint16_t service_pack_major;
+ 	uint16_t service_pack_minor;
+ 	uint16_t suite_mask;
+@@ -1582,10 +1582,10 @@ struct spoolss_OSVersionEx {
+ }/* [gensize,public] */;
+ 
+ union spoolss_PrinterData {
+-	const char * string;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_SZ)] */
++	const char * string;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2),case(REG_SZ)] */
+ 	DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING),case(REG_BINARY)] */
+ 	uint32_t value;/* [case(REG_DWORD)] */
+-	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_MULTI_SZ)] */
++	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2),case(REG_MULTI_SZ)] */
+ 	DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
+ }/* [nodiscriminant,public] */;
+ 
+@@ -1618,7 +1618,7 @@ struct spoolss_FormArea {
+ 
+ struct spoolss_FormInfo1 {
+ 	enum spoolss_FormFlags flags;
+-	const char * form_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * form_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_FormSize size;
+ 	struct spoolss_FormArea area;
+ }/* [gensize,public] */;
+@@ -1630,14 +1630,14 @@ struct spoolss_FormInfo1 {
+ 
+ struct spoolss_FormInfo2 {
+ 	enum spoolss_FormFlags flags;
+-	const char * form_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * form_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct spoolss_FormSize size;
+ 	struct spoolss_FormArea area;
+ 	const char * keyword;/* [relative,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ 	uint32_t string_type;
+-	const char * mui_dll;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * mui_dll;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t ressource_id;
+-	const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint16_t lang_id;
+ 	uint16_t unused;
+ }/* [gensize,public] */;
+@@ -1673,7 +1673,7 @@ union spoolss_AddFormInfo {
+ }/* [switch_type(uint32)] */;
+ 
+ struct spoolss_PortInfo1 {
+-	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ /* bitmap spoolss_PortType */
+@@ -1683,9 +1683,9 @@ struct spoolss_PortInfo1 {
+ #define SPOOLSS_PORT_TYPE_NET_ATTACHED ( 0x00000008 )
+ 
+ struct spoolss_PortInfo2 {
+-	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t port_type;
+ 	uint32_t reserved;
+ }/* [gensize,public] */;
+@@ -1742,12 +1742,12 @@ enum spoolss_PortSeverity
+ 
+ struct spoolss_PortInfo3 {
+ 	enum spoolss_PortStatus status;
+-	const char * status_string;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * status_string;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	enum spoolss_PortSeverity severity;
+ }/* [gensize,public] */;
+ 
+ struct spoolss_PortInfoFF {
+-	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	DATA_BLOB monitor_data;
+ }/* [gensize,public] */;
+ 
+@@ -1759,13 +1759,13 @@ union spoolss_PortInfo {
+ }/* [relative_base,public,nodiscriminant,flag(LIBNDR_FLAG_RELATIVE_REVERSE)] */;
+ 
+ struct spoolss_MonitorInfo1 {
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ struct spoolss_MonitorInfo2 {
+-	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * environment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * dll_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * environment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * dll_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ union spoolss_MonitorInfo {
+@@ -1774,7 +1774,7 @@ union spoolss_MonitorInfo {
+ }/* [relative_base,public,nodiscriminant,flag(LIBNDR_FLAG_RELATIVE_REVERSE)] */;
+ 
+ struct spoolss_PrintProcDataTypesInfo1 {
+-	const char * name_array;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * name_array;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ union spoolss_PrintProcDataTypesInfo {
+@@ -2065,15 +2065,15 @@ struct spoolss_UserLevelCtr {
+ #define JOB_ACCESS_READ ( 0x00000020 )
+ 
+ struct spoolss_PrinterEnumValues {
+-	const char * value_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * value_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t value_name_len;/* [value(2*strlen_m_term(value_name))] */
+ 	enum winreg_Type type;
+-	DATA_BLOB *data;/* [relative,subcontext_size(data_length),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
+-	uint32_t data_length;/* [value(data->length)] */
++	DATA_BLOB *data;/* [relative,subcontext_size(data_length),subcontext(0),flag(LIBNDR_FLAG_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type))] */
++	uint32_t data_length;/* [value(data?data->length:0)] */
+ }/* [relative_base,gensize,public] */;
+ 
+ union spoolss_KeyNames {
+-	const char ** string_array;/* [default,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char ** string_array;/* [default,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [nodiscriminant] */;
+ 
+ /* bitmap spoolss_DeleteDriverFlags */
+@@ -2130,7 +2130,7 @@ struct spoolss_PortData2 {
+ }/* [public] */;
+ 
+ struct spoolss_MonitorUi {
+-	const char * dll_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * dll_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [public] */;
+ 
+ /* bitmap spoolss_AddPrinterDriverExFlags */
+diff --git a/librpc/gen_ndr/svcctl.h b/librpc/gen_ndr/svcctl.h
+index f047701..466a4d3 100644
+--- a/librpc/gen_ndr/svcctl.h
++++ b/librpc/gen_ndr/svcctl.h
+@@ -87,8 +87,8 @@ struct SERVICE_STATUS_PROCESS {
+ }/* [public] */;
+ 
+ struct ENUM_SERVICE_STATUSW {
+-	const char * service_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * service_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	struct SERVICE_STATUS status;
+ }/* [gensize,public] */;
+ 
+@@ -246,7 +246,7 @@ enum svcctl_ConfigLevel
+ ;
+ 
+ struct SERVICE_DESCRIPTION {
+-	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ }/* [gensize,public] */;
+ 
+ enum SC_ACTION_TYPE
+@@ -273,8 +273,8 @@ struct SC_ACTION {
+ 
+ struct SERVICE_FAILURE_ACTIONS {
+ 	uint32_t reset_period;
+-	const char * rebootmsg;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+-	const char * command;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
++	const char * rebootmsg;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
++	const char * command;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2)] */
+ 	uint32_t num_actions;/* [range(0,1024)] */
+ 	struct SC_ACTION *actions;/* [relative,size_is(num_actions)] */
+ }/* [gensize,public] */;
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0002-spoolss-fix-potential-crash-bug-in-spoolss_PrinterEn.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0002-spoolss-fix-potential-crash-bug-in-spoolss_PrinterEn.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0002-spoolss-fix-potential-crash-bug-in-spoolss_PrinterEn.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0002-spoolss-fix-potential-crash-bug-in-spoolss_PrinterEn.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,32 @@
+From a8637bb7b2e49274db3e66ce1b24d86952fe48ac Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Mon, 2 Aug 2010 15:52:09 +0200
+Subject: [PATCH 2/9] spoolss: fix potential crash bug in spoolss_PrinterEnumValues push path.
+
+Guenther
+(cherry picked from commit 45952b56797982d27731b20d97f5648c9414814a)
+(cherry picked from commit ad68e45b505331683a2510de20f113a7c20e68e1)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 5a660f3f15e1e04d556b34b9e49e7177193df026)
+(cherry picked from commit cdcc2ba83c2e4a1f5ca5da870dc673e7e2507d23)
+---
+ librpc/idl/spoolss.idl |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
+index bfaca4a..44839be 100644
+--- a/librpc/idl/spoolss.idl
++++ b/librpc/idl/spoolss.idl
+@@ -2551,7 +2551,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
+ 		[value(2*strlen_m_term(value_name))] uint32 value_name_len;
+ 		winreg_Type type;
+ 		[relative,subcontext(0),subcontext_size(data_length),flag(NDR_REMAINING)] DATA_BLOB *data;
+-		[value(data->length)] uint32 data_length;
++		[value(data ? data->length : 0)] uint32 data_length;
+ 	} spoolss_PrinterEnumValues;
+ 
+ 	[public,noopnum,noprint] WERROR _spoolss_EnumPrinterDataEx(
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0003-spoolss-pretty-print-a-struct-spoolss_Time.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0003-spoolss-pretty-print-a-struct-spoolss_Time.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0003-spoolss-pretty-print-a-struct-spoolss_Time.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0003-spoolss-pretty-print-a-struct-spoolss_Time.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,121 @@
+From 7a83d0428a097c5b35019a262dad1b22e3ff4b26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
+Date: Thu, 22 Apr 2010 11:42:45 +0200
+Subject: [PATCH 3/9] spoolss: pretty-print a struct spoolss_Time.
+
+Guenther
+(cherry picked from commit 440075247d11a7852d8567753f426fa67f41d875)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 0396087c36652b6c3d2bf4206212c2823352f9e0)
+(cherry picked from commit 2fd1b7cb9d7908dcb02e7405a8e532fd9a9738b0)
+---
+ librpc/gen_ndr/ndr_spoolss.c |   15 ---------------
+ librpc/gen_ndr/spoolss.h     |    2 +-
+ librpc/idl/spoolss.idl       |    2 +-
+ librpc/ndr/ndr_spoolss_buf.c |   27 +++++++++++++++++++++++++++
+ librpc/ndr/ndr_spoolss_buf.h |    1 +
+ 5 files changed, 30 insertions(+), 17 deletions(-)
+
+diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
+index 41f994b..c94edef 100644
+--- a/librpc/gen_ndr/ndr_spoolss.c
++++ b/librpc/gen_ndr/ndr_spoolss.c
+@@ -44,21 +44,6 @@ static enum ndr_err_code ndr_pull_spoolss_Time(struct ndr_pull *ndr, int ndr_fla
+ 	return NDR_ERR_SUCCESS;
+ }
+ 
+-_PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, const struct spoolss_Time *r)
+-{
+-	ndr_print_struct(ndr, name, "spoolss_Time");
+-	ndr->depth++;
+-	ndr_print_uint16(ndr, "year", r->year);
+-	ndr_print_uint16(ndr, "month", r->month);
+-	ndr_print_uint16(ndr, "day_of_week", r->day_of_week);
+-	ndr_print_uint16(ndr, "day", r->day);
+-	ndr_print_uint16(ndr, "hour", r->hour);
+-	ndr_print_uint16(ndr, "minute", r->minute);
+-	ndr_print_uint16(ndr, "second", r->second);
+-	ndr_print_uint16(ndr, "millisecond", r->millisecond);
+-	ndr->depth--;
+-}
+-
+ static size_t ndr_size_spoolss_Time(const struct spoolss_Time *r, struct smb_iconv_convenience *ic, int flags)
+ {
+ 	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_Time, ic);
+diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
+index ef8c63e..855e701 100644
+--- a/librpc/gen_ndr/spoolss.h
++++ b/librpc/gen_ndr/spoolss.h
+@@ -126,7 +126,7 @@ struct spoolss_Time {
+ 	uint16_t minute;
+ 	uint16_t second;
+ 	uint16_t millisecond;
+-}/* [gensize] */;
++}/* [noprint,gensize] */;
+ 
+ struct spoolss_TimeCtr {
+ 	uint32_t size;/* [value(ndr_size_spoolss_Time(time,ndr->iconv_convenience,ndr->flags))] */
+diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
+index 44839be..e0d9d2f 100644
+--- a/librpc/idl/spoolss.idl
++++ b/librpc/idl/spoolss.idl
+@@ -17,7 +17,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
+ ] interface spoolss
+ {
+ 	typedef [v1_enum] enum winreg_Type winreg_Type;
+-	typedef [gensize] struct {
++	typedef [gensize,noprint] struct {
+ 		uint16 year;
+ 		uint16 month;
+ 		uint16 day_of_week;
+diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
+index 5aa89e4..811a8e2 100644
+--- a/librpc/ndr/ndr_spoolss_buf.c
++++ b/librpc/ndr/ndr_spoolss_buf.c
+@@ -1382,3 +1382,30 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, i
+ 	}
+ 	return NDR_ERR_SUCCESS;
+ }
++
++_PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, const struct spoolss_Time *r)
++{
++	struct tm tm;
++	time_t t;
++	char *str;
++
++	tm.tm_sec	= r->second;
++	tm.tm_min	= r->minute;
++	tm.tm_hour	= r->hour;
++	tm.tm_mday	= r->day;
++	tm.tm_mon	= r->month - 1;
++	tm.tm_year	= r->year - 1900;
++	tm.tm_wday	= r->day_of_week;
++	tm.tm_yday	= 0;
++	tm.tm_isdst	= -1;
++
++	t = mktime(&tm);
++
++	str = timestring(ndr, t);
++
++	ndr_print_struct(ndr, name, "spoolss_Time");
++	ndr->depth++;
++	ndr_print_string(ndr, "", str);
++	ndr->depth--;
++	talloc_free(str);
++}
+diff --git a/librpc/ndr/ndr_spoolss_buf.h b/librpc/ndr/ndr_spoolss_buf.h
+index 2766abb..89dcb46 100644
+--- a/librpc/ndr/ndr_spoolss_buf.h
++++ b/librpc/ndr/ndr_spoolss_buf.h
+@@ -51,6 +51,7 @@ size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t
+ void ndr_print_spoolss_security_descriptor(struct ndr_print *ndr, const char *name, const struct security_descriptor *r);
+ enum ndr_err_code ndr_pull_spoolss_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r);
+ enum ndr_err_code ndr_push_spoolss_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r);
++_PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, const struct spoolss_Time *r);
+ 
+ #undef _PRINTF_ATTRIBUTE
+ #define _PRINTF_ATTRIBUTE(a1, a2)
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0004-librpc-ndr-let-ndr_push-pull_DATA_BLOB-look-at-LIBND.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0004-librpc-ndr-let-ndr_push-pull_DATA_BLOB-look-at-LIBND.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0004-librpc-ndr-let-ndr_push-pull_DATA_BLOB-look-at-LIBND.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0004-librpc-ndr-let-ndr_push-pull_DATA_BLOB-look-at-LIBND.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,53 @@
+From bdd325a1d2c101f065047af9b710b14d24c2cf6f Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 18:19:13 +0100
+Subject: [PATCH 4/9] librpc/ndr: let ndr_push/pull_DATA_BLOB() look at LIBNDR_FLAG_REMAINING before LIBNDR_ALIGN_FLAGS
+
+metze
+(cherry picked from commit 6c3a49ced333988b21d86e47b2b1dd1a5957e15c)
+(cherry picked from commit 5f8b7f95e9ce5946f048b242dbbaa14897aea919)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit eab30c15b2528d92e09b774be453e657020e5aa7)
+(cherry picked from commit 3047e20d3b0ac89afdad3fda741f948b03e2ffdc)
+---
+ librpc/ndr/ndr_basic.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
+index 50a8922..f913eff 100644
+--- a/librpc/ndr/ndr_basic.c
++++ b/librpc/ndr/ndr_basic.c
+@@ -1011,7 +1011,8 @@ _PUBLIC_ void ndr_print_DATA_BLOB(struct ndr_print *ndr, const char *name, DATA_
+ */
+ _PUBLIC_ enum ndr_err_code ndr_push_DATA_BLOB(struct ndr_push *ndr, int ndr_flags, DATA_BLOB blob)
+ {
+-	if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
++	if (ndr->flags & LIBNDR_FLAG_REMAINING) {
++	} else if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
+ 		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 			blob.length = NDR_ALIGN(ndr, 2);
+ 		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+@@ -1035,7 +1036,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flag
+ {
+ 	uint32_t length = 0;
+ 
+-	if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
++	if (ndr->flags & LIBNDR_FLAG_REMAINING) {
++		length = ndr->data_size - ndr->offset;
++	} else if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
+ 		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 			length = NDR_ALIGN(ndr, 2);
+ 		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+@@ -1046,8 +1049,6 @@ _PUBLIC_ enum ndr_err_code ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flag
+ 		if (ndr->data_size - ndr->offset < length) {
+ 			length = ndr->data_size - ndr->offset;
+ 		}
+-	} else if (ndr->flags & LIBNDR_FLAG_REMAINING) {
+-		length = ndr->data_size - ndr->offset;
+ 	} else {
+ 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &length));
+ 	}
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0005-librpc-ndr-ndr-align-relative-pointers-based-on-the-.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0005-librpc-ndr-ndr-align-relative-pointers-based-on-the-.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0005-librpc-ndr-ndr-align-relative-pointers-based-on-the-.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0005-librpc-ndr-ndr-align-relative-pointers-based-on-the-.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,59 @@
+From a51c67c7b6f471a59ef3c88ca24ad9ea0a4c9196 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 15:45:44 +0100
+Subject: [PATCH 5/9] librpc/ndr: ndr align relative pointers based on the given flags
+
+We used to do this only for the reverse relative pointers
+and now we always do it.
+
+metze
+(cherry picked from commit 84b884eb4bec38b721d6c38704f12d1d2c601bcb)
+(cherry picked from commit 6648ce8990a97da739d4be69657e9ace6198068c)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 490d1553714ffc5afe0e49c3473e19697bdfbd53)
+(cherry picked from commit 8c61ff6c55fef5f5b2c256503bbde07c6365a805)
+---
+ librpc/ndr/ndr.c |   26 ++++++++++++++++++++++++++
+ 1 files changed, 26 insertions(+), 0 deletions(-)
+
+diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
+index 5030443..42d0e81 100644
+--- a/librpc/ndr/ndr.c
++++ b/librpc/ndr/ndr.c
+@@ -1105,6 +1105,32 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_start(struct ndr_push *ndr, co
+ 		return NDR_ERR_SUCCESS;
+ 	}
+ 	if (!(ndr->flags & LIBNDR_FLAG_RELATIVE_REVERSE)) {
++		uint32_t relative_offset;
++		size_t pad;
++		/* TODO: remove this hack and let the idl use FLAG_ALIGN2 explicit */
++		size_t align = 2;
++
++		if (ndr->offset < ndr->relative_base_offset) {
++			return ndr_push_error(ndr, NDR_ERR_BUFSIZE,
++				      "ndr_push_relative_ptr2_start ndr->offset(%u) < ndr->relative_base_offset(%u)",
++				      ndr->offset, ndr->relative_base_offset);
++		}
++
++		relative_offset = ndr->offset - ndr->relative_base_offset;
++
++		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
++			align = 2;
++		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
++			align = 4;
++		} else if (ndr->flags & LIBNDR_FLAG_ALIGN8) {
++			align = 8;
++		}
++
++		pad = ndr_align_size(relative_offset, align);
++		if (pad) {
++			NDR_CHECK(ndr_push_zero(ndr, pad));
++		}
++
+ 		return ndr_push_relative_ptr2(ndr, p);
+ 	}
+ 	if (ndr->relative_end_offset == -1) {
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0006-librpc-align-nstring-and-nstring_array-to-2-byte.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0006-librpc-align-nstring-and-nstring_array-to-2-byte.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0006-librpc-align-nstring-and-nstring_array-to-2-byte.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0006-librpc-align-nstring-and-nstring_array-to-2-byte.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,41 @@
+From 04d7a47653ef04d14673bb647cad7ae41e47e429 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 15:57:21 +0100
+Subject: [PATCH 6/9] librpc: align nstring and nstring_array to 2 byte
+
+metze
+(cherry picked from commit 712ef2590d0ee59a4a659926cdf8aac6e968dfa8)
+(cherry picked from commit 0fb64a26b3b35b75f2f548d882bed41aa0386c6b)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit c26be77576e13582c7d51fe84f4c69f1c1abf28d)
+(cherry picked from commit c13d11b336141800db85667e53877ae689583417)
+---
+ librpc/idl/idl_types.h |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/librpc/idl/idl_types.h b/librpc/idl/idl_types.h
+index 3c6c12c..88ece20 100644
+--- a/librpc/idl/idl_types.h
++++ b/librpc/idl/idl_types.h
+@@ -12,7 +12,7 @@
+ /*
+   a null terminated UCS2 string
+ */
+-#define nstring		[flag(STR_NULLTERM)] string
++#define nstring		[flag(STR_NULLTERM|NDR_ALIGN2)] string
+ 
+ /*
+   an ascii string prefixed with [offset] [length], both 32 bits
+@@ -50,7 +50,7 @@
+ /*
+   a null terminated UCS2 string
+ */
+-#define nstring_array	[flag(STR_NULLTERM)] string_array
++#define nstring_array	[flag(STR_NULLTERM|NDR_ALIGN2)] string_array
+ 
+ #define NDR_NOALIGN       LIBNDR_FLAG_NOALIGN
+ #define NDR_REMAINING     LIBNDR_FLAG_REMAINING
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0007-librpc-ndr-remove-align2-hack-for-relative-pointers.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0007-librpc-ndr-remove-align2-hack-for-relative-pointers.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0007-librpc-ndr-remove-align2-hack-for-relative-pointers.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0007-librpc-ndr-remove-align2-hack-for-relative-pointers.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,43 @@
+From 86333080a096052fe927e3d639b5f67f3156c1f6 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 15:58:45 +0100
+Subject: [PATCH 7/9] librpc/ndr: remove align2 hack for relative pointers
+
+metze
+(cherry picked from commit 23f6f449792d889538e0d0028bb8fbd5c807b0da)
+(cherry picked from commit 9313b5d1da24406dd7d26afb2488fee0cbea44a9)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 1757dee05942add03edb51163bead807d839fcf6)
+(cherry picked from commit 50f639635ceda021efd129d8ea1ecaba4c985f4c)
+---
+ librpc/ndr/ndr.c |    6 +-----
+ 1 files changed, 1 insertions(+), 5 deletions(-)
+
+diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
+index 42d0e81..9f2042d 100644
+--- a/librpc/ndr/ndr.c
++++ b/librpc/ndr/ndr.c
+@@ -1107,8 +1107,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_start(struct ndr_push *ndr, co
+ 	if (!(ndr->flags & LIBNDR_FLAG_RELATIVE_REVERSE)) {
+ 		uint32_t relative_offset;
+ 		size_t pad;
+-		/* TODO: remove this hack and let the idl use FLAG_ALIGN2 explicit */
+-		size_t align = 2;
++		size_t align = 1;
+ 
+ 		if (ndr->offset < ndr->relative_base_offset) {
+ 			return ndr_push_error(ndr, NDR_ERR_BUFSIZE,
+@@ -1197,9 +1196,6 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_end(struct ndr_push *ndr, cons
+ 	/* the reversed offset is at the end of the main buffer */
+ 	correct_offset = ndr->relative_end_offset - len;
+ 
+-	/* TODO: remove this hack and let the idl use FLAG_ALIGN2 explicit */
+-	align = 2;
+-
+ 	if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 		align = 2;
+ 	} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0008-spoolss.idl-align-spoolss_PrinterEnumValues-data-bas.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0008-spoolss.idl-align-spoolss_PrinterEnumValues-data-bas.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0008-spoolss.idl-align-spoolss_PrinterEnumValues-data-bas.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0008-spoolss.idl-align-spoolss_PrinterEnumValues-data-bas.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,86 @@
+From 26e85b0d623191b994f81ce0516871cdc870cb45 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 19:23:33 +0100
+Subject: [PATCH 8/9] spoolss.idl: align spoolss_PrinterEnumValues 'data' based on the type
+
+metze
+(cherry picked from commit 341330600aebcec92fba64ea343888c15a0c3d44)
+(cherry picked from commit 757471a5fcd4f95da28402bae6c9ceccff7d6548)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 3cb71012a2cf26037323cded8cfd9ec5d12223c6)
+(cherry picked from commit 380c40986d029d21e9965f582a0ba3085262466c)
+---
+ librpc/idl/spoolss.idl       |    2 +-
+ librpc/ndr/ndr_spoolss_buf.c |   32 ++++++++++++++++++++++++++++++++
+ librpc/ndr/ndr_spoolss_buf.h |    1 +
+ 3 files changed, 34 insertions(+), 1 deletions(-)
+
+diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
+index e0d9d2f..4b277f8 100644
+--- a/librpc/idl/spoolss.idl
++++ b/librpc/idl/spoolss.idl
+@@ -2550,7 +2550,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
+ 		[relative] nstring *value_name;
+ 		[value(2*strlen_m_term(value_name))] uint32 value_name_len;
+ 		winreg_Type type;
+-		[relative,subcontext(0),subcontext_size(data_length),flag(NDR_REMAINING)] DATA_BLOB *data;
++		[relative,subcontext(0),subcontext_size(data_length),flag(NDR_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type))] DATA_BLOB *data;
+ 		[value(data ? data->length : 0)] uint32 data_length;
+ 	} spoolss_PrinterEnumValues;
+ 
+diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
+index 811a8e2..e132e70 100644
+--- a/librpc/ndr/ndr_spoolss_buf.c
++++ b/librpc/ndr/ndr_spoolss_buf.c
+@@ -1409,3 +1409,35 @@ _PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, co
+ 	ndr->depth--;
+ 	talloc_free(str);
+ }
++
++_PUBLIC_ uint32_t ndr_spoolss_PrinterEnumValues_align(enum winreg_Type type)
++{
++	switch(type) {
++	case REG_NONE:
++		return 0;
++	case REG_SZ:
++		return LIBNDR_FLAG_ALIGN2;
++	case REG_EXPAND_SZ:
++		return LIBNDR_FLAG_ALIGN2;
++	case REG_BINARY:
++		return 0;
++	case REG_DWORD:
++		return LIBNDR_FLAG_ALIGN4;
++	case REG_DWORD_BIG_ENDIAN:
++		return LIBNDR_FLAG_ALIGN4;
++	case REG_LINK:
++		return 0;
++	case REG_MULTI_SZ:
++		return LIBNDR_FLAG_ALIGN2;
++	case REG_RESOURCE_LIST:
++		return LIBNDR_FLAG_ALIGN2;
++	case REG_FULL_RESOURCE_DESCRIPTOR:
++		return LIBNDR_FLAG_ALIGN4;
++	case REG_RESOURCE_REQUIREMENTS_LIST:
++		return LIBNDR_FLAG_ALIGN2;
++	case REG_QWORD:
++		return LIBNDR_FLAG_ALIGN8;
++	}
++
++	return 0;
++}
+diff --git a/librpc/ndr/ndr_spoolss_buf.h b/librpc/ndr/ndr_spoolss_buf.h
+index 89dcb46..0b75de0 100644
+--- a/librpc/ndr/ndr_spoolss_buf.h
++++ b/librpc/ndr/ndr_spoolss_buf.h
+@@ -52,6 +52,7 @@ void ndr_print_spoolss_security_descriptor(struct ndr_print *ndr, const char *na
+ enum ndr_err_code ndr_pull_spoolss_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r);
+ enum ndr_err_code ndr_push_spoolss_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r);
+ _PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, const struct spoolss_Time *r);
++_PUBLIC_ uint32_t ndr_spoolss_PrinterEnumValues_align(enum winreg_Type type);
+ 
+ #undef _PRINTF_ATTRIBUTE
+ #define _PRINTF_ATTRIBUTE(a1, a2)
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0009-spoolss.idl-align-spoolss_DriverFileInfo-relative-po.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0009-spoolss.idl-align-spoolss_DriverFileInfo-relative-po.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0009-spoolss.idl-align-spoolss_DriverFileInfo-relative-po.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0009-spoolss.idl-align-spoolss_DriverFileInfo-relative-po.patch	2011-03-13 07:56:44.000000000 +0100
@@ -0,0 +1,32 @@
+From 0b7f09814edc15166f72095fa95827be2b81e7bb Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 22 Feb 2011 15:56:30 +0100
+Subject: [PATCH 9/9] spoolss.idl: align spoolss_DriverFileInfo relative pointer to 4 byte
+
+metze
+(cherry picked from commit b6ece01c7922adeb3c9e718bc8cc610cae7c543c)
+(cherry picked from commit ba1a72cb153892e491af91a6bb61e1820135fa12)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 25f93fe17a396f9c0372dd5d1f4210ecfce7ded9)
+(cherry picked from commit b8fbc4eff64d4ec5dec0bbfd055f8b3a6851b9f0)
+---
+ librpc/idl/spoolss.idl |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
+index 4b277f8..d17b0b4 100644
+--- a/librpc/idl/spoolss.idl
++++ b/librpc/idl/spoolss.idl
+@@ -1256,7 +1256,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
+ 		spoolss_DriverOSVersion version;
+ 		[relative] nstring *driver_name;
+ 		[relative] nstring *architecture;
+-		[relative] [size_is(file_count)] spoolss_DriverFileInfo *file_info;
++		[relative,size_is(file_count),flag(NDR_ALIGN4)] spoolss_DriverFileInfo *file_info;
+ 		uint32 file_count;
+ 		[relative] nstring *monitor_name;
+ 		[relative] nstring *default_datatype;
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0010-librpc-ndr-handle-NOALIGN-flag-for-relative-pointers.patch samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0010-librpc-ndr-handle-NOALIGN-flag-for-relative-pointers.patch
--- samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0010-librpc-ndr-handle-NOALIGN-flag-for-relative-pointers.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_611177-617429_upstream_7567_0010-librpc-ndr-handle-NOALIGN-flag-for-relative-pointers.patch	2011-03-14 21:59:19.000000000 +0100
@@ -0,0 +1,85 @@
+From ca2d4b62f951b1bb03d288ddc8c193579a83f03f Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Tue, 1 Mar 2011 14:20:32 +0100
+Subject: [PATCH 12/12] librpc/ndr: handle NOALIGN flag for relative pointers and alignment DATA_BLOBs
+
+metze
+
+Autobuild-User: Stefan Metzmacher <metze@samba.org>
+Autobuild-Date: Tue Mar  1 17:11:03 CET 2011 on sn-devel-104
+(cherry picked from commit ef224aa004d5f1726d8dca020e0ef96d8c58565e)
+(cherry picked from commit 1ea17bacdb09d28a12a8b6ddeba3ac285cd9f905)
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit 7c6bc031b3af3643027865e444fb16f7bb7c7152)
+---
+ librpc/ndr/ndr.c       |    8 ++++++--
+ librpc/ndr/ndr_basic.c |   11 ++++++++---
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
+index 9f2042d..2439374 100644
+--- a/librpc/ndr/ndr.c
++++ b/librpc/ndr/ndr.c
+@@ -1117,7 +1117,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_start(struct ndr_push *ndr, co
+ 
+ 		relative_offset = ndr->offset - ndr->relative_base_offset;
+ 
+-		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
++		if (ndr->flags & LIBNDR_FLAG_NOALIGN) {
++			align = 1;
++		} else if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 			align = 2;
+ 		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+ 			align = 4;
+@@ -1196,7 +1198,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_end(struct ndr_push *ndr, cons
+ 	/* the reversed offset is at the end of the main buffer */
+ 	correct_offset = ndr->relative_end_offset - len;
+ 
+-	if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
++	if (ndr->flags & LIBNDR_FLAG_NOALIGN) {
++		align = 1;
++	} else if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 		align = 2;
+ 	} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+ 		align = 4;
+diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
+index f913eff..64ea6d7 100644
+--- a/librpc/ndr/ndr_basic.c
++++ b/librpc/ndr/ndr_basic.c
+@@ -1012,8 +1012,11 @@ _PUBLIC_ void ndr_print_DATA_BLOB(struct ndr_print *ndr, const char *name, DATA_
+ _PUBLIC_ enum ndr_err_code ndr_push_DATA_BLOB(struct ndr_push *ndr, int ndr_flags, DATA_BLOB blob)
+ {
+ 	if (ndr->flags & LIBNDR_FLAG_REMAINING) {
++		/* nothing to do */
+ 	} else if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
+-		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
++		if (ndr->flags & LIBNDR_FLAG_NOALIGN) {
++			blob.length = 0;
++		} else if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 			blob.length = NDR_ALIGN(ndr, 2);
+ 		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+ 			blob.length = NDR_ALIGN(ndr, 4);
+@@ -1022,7 +1025,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_DATA_BLOB(struct ndr_push *ndr, int ndr_flag
+ 		}
+ 		NDR_PUSH_ALLOC_SIZE(ndr, blob.data, blob.length);
+ 		data_blob_clear(&blob);
+-	} else if (!(ndr->flags & LIBNDR_FLAG_REMAINING)) {
++	} else {
+ 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, blob.length));
+ 	}
+ 	NDR_CHECK(ndr_push_bytes(ndr, blob.data, blob.length));
+@@ -1039,7 +1042,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flag
+ 	if (ndr->flags & LIBNDR_FLAG_REMAINING) {
+ 		length = ndr->data_size - ndr->offset;
+ 	} else if (ndr->flags & LIBNDR_ALIGN_FLAGS) {
+-		if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
++		if (ndr->flags & LIBNDR_FLAG_NOALIGN) {
++			length = 0;
++		} else if (ndr->flags & LIBNDR_FLAG_ALIGN2) {
+ 			length = NDR_ALIGN(ndr, 2);
+ 		} else if (ndr->flags & LIBNDR_FLAG_ALIGN4) {
+ 			length = NDR_ALIGN(ndr, 4);
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0001-First-part-of-fix-for-bug-7777-When-requesting-looku.patch samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0001-First-part-of-fix-for-bug-7777-When-requesting-looku.patch
--- samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0001-First-part-of-fix-for-bug-7777-When-requesting-looku.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0001-First-part-of-fix-for-bug-7777-When-requesting-looku.patch	2011-03-13 08:16:02.000000000 +0100
@@ -0,0 +1,39 @@
+From 667ce0018a64c9fb0b44b55aae8b3cd4a2bd3bbf Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Fri, 5 Nov 2010 12:11:53 -0700
+Subject: [PATCH 1/2] First part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
+
+Ensure idmap_init_passdb_domain() correctly initialized the default
+domain first.
+
+Jeremy.
+(cherry picked from commit 32a5aa62cb54e90947bd027e72871ffc07c3dbcf)
+(cherry picked from commit 5cbd0958eaf25952055c08e3fdc065b815634a3e)
+---
+ source3/winbindd/idmap.c |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c
+index 4aa229c..7aa2853 100644
+--- a/source3/winbindd/idmap.c
++++ b/source3/winbindd/idmap.c
+@@ -428,6 +428,16 @@ fail:
+ 
+ static struct idmap_domain *idmap_init_passdb_domain(TALLOC_CTX *mem_ctx)
+ {
++	/*
++	 * Always init the default domain, we can't go without one
++	 */
++	if (default_idmap_domain == NULL) {
++		default_idmap_domain = idmap_init_default_domain(NULL);
++	}
++	if (default_idmap_domain == NULL) {
++		return NULL;
++	}
++
+ 	if (passdb_idmap_domain != NULL) {
+ 		return passdb_idmap_domain;
+ 	}
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0002-Second-part-of-fix-for-bug-7777-When-requesting-look.patch samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0002-Second-part-of-fix-for-bug-7777-When-requesting-look.patch
--- samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0002-Second-part-of-fix-for-bug-7777-When-requesting-look.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/bug_613624_upstream_7777_0002-Second-part-of-fix-for-bug-7777-When-requesting-look.patch	2011-03-13 08:16:02.000000000 +0100
@@ -0,0 +1,76 @@
+From 52f375dea6c88a54571b101e40e9df8d0825550d Mon Sep 17 00:00:00 2001
+From: Jeremy Allison <jra@samba.org>
+Date: Fri, 5 Nov 2010 12:13:38 -0700
+Subject: [PATCH 2/2] Second part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
+
+Ensure we return after calling passdb for SID lookups for which we are
+authoritative.
+
+Jeremy.
+(cherry picked from commit b5c8b1bbb53caa0ceabb4a5180ff7deb1e58b538)
+(cherry picked from commit 8af876432a83292db672c5f7a1fb7e0ec9c1cf65)
+---
+ source3/winbindd/idmap_util.c |   31 +++++++++++++++++++++++++------
+ 1 files changed, 25 insertions(+), 6 deletions(-)
+
+diff --git a/source3/winbindd/idmap_util.c b/source3/winbindd/idmap_util.c
+index 37b7ecb..ba5e637 100644
+--- a/source3/winbindd/idmap_util.c
++++ b/source3/winbindd/idmap_util.c
+@@ -25,6 +25,23 @@
+ #define DBGC_CLASS DBGC_IDMAP
+ 
+ /*****************************************************************
++ Returns true if the request was for a specific domain, or
++ for a sid we are authoritative for - BUILTIN, or our own domain.
++*****************************************************************/
++
++static bool is_specific_domain_request(const char *dom_name, DOM_SID *sid)
++{
++	if (dom_name && dom_name[0] != '\0') {
++		return true;
++	}
++	if (sid_check_is_in_builtin(sid) ||
++			sid_check_is_in_our_domain(sid)) {
++		return true;
++	}
++	return false;
++}
++
++/*****************************************************************
+  Returns the SID mapped to the given UID.
+  If mapping is not possible returns an error.
+ *****************************************************************/  
+@@ -194,10 +211,11 @@ backend:
+ 		goto done;
+ 	}
+ 
+-	if (dom_name[0] != '\0') {
++	if (is_specific_domain_request(dom_name, sid)) {
+ 		/*
+-		 * We had the task to go to a specific domain which
+-		 * could not answer our request. Fail.
++		 * We had the task to go to a specific domain or
++		 * a domain for which we are authoritative for and
++		 * it could not answer our request. Fail.
+ 		 */
+ 		if (winbindd_use_idmap_cache()) {
+ 			idmap_cache_set_sid2uid(sid, -1);
+@@ -275,10 +293,11 @@ backend:
+ 		goto done;
+ 	}
+ 
+-	if (domname[0] != '\0') {
++	if (is_specific_domain_request(domname, sid)) {
+ 		/*
+-		 * We had the task to go to a specific domain which
+-		 * could not answer our request. Fail.
++		 * We had the task to go to a specific domain or
++		 * a domain for which we are authoritative for and
++		 * it could not answer our request. Fail.
+ 		 */
+ 		if (winbindd_use_idmap_cache()) {
+ 			idmap_cache_set_sid2uid(sid, -1);
+-- 
+1.7.4.1
+
diff -Nru samba-3.5.6~dfsg/debian/patches/debian-changes-2:3.5.6~dfsg-3squeeze2 samba-3.5.6~dfsg/debian/patches/debian-changes-2:3.5.6~dfsg-3squeeze2
--- samba-3.5.6~dfsg/debian/patches/debian-changes-2:3.5.6~dfsg-3squeeze2	2011-02-25 19:19:39.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/debian-changes-2:3.5.6~dfsg-3squeeze2	1970-01-01 01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-Description: Upstream changes introduced in version 2:3.5.6~dfsg-3squeeze2
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- samba (2:3.5.6~dfsg-3squeeze2) stable-security; urgency=high
- .
-   * Security update, fixing the following issue:
-     - CVE-2011-0719: denial of service by memory corruption
- .
- The person named in the Author field signed this changelog entry.
-Author: Christian Perrier <bubulle@debian.org>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- /dev/null
-+++ samba-3.5.6~dfsg/nohup.out
-@@ -0,0 +1 @@
-+À la révision 3679.
diff -Nru samba-3.5.6~dfsg/debian/patches/series samba-3.5.6~dfsg/debian/patches/series
--- samba-3.5.6~dfsg/debian/patches/series	2011-02-23 20:24:17.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/series	2011-03-14 22:07:40.000000000 +0100
@@ -14,4 +14,16 @@
 bug_605728_upstream_7791.patch
 bug_574468_upstream_7265.patch
 security-CVE-2011-0719.patch
-debian-changes-2:3.5.6~dfsg-3squeeze2
+bug_611177-617429_upstream_7567_0001-rerun-make-samba3-idl.patch
+bug_611177-617429_upstream_7567_0002-spoolss-fix-potential-crash-bug-in-spoolss_PrinterEn.patch
+bug_611177-617429_upstream_7567_0003-spoolss-pretty-print-a-struct-spoolss_Time.patch
+bug_611177-617429_upstream_7567_0004-librpc-ndr-let-ndr_push-pull_DATA_BLOB-look-at-LIBND.patch
+bug_611177-617429_upstream_7567_0005-librpc-ndr-ndr-align-relative-pointers-based-on-the-.patch
+bug_611177-617429_upstream_7567_0006-librpc-align-nstring-and-nstring_array-to-2-byte.patch
+bug_611177-617429_upstream_7567_0007-librpc-ndr-remove-align2-hack-for-relative-pointers.patch
+bug_611177-617429_upstream_7567_0008-spoolss.idl-align-spoolss_PrinterEnumValues-data-bas.patch
+bug_611177-617429_upstream_7567_0009-spoolss.idl-align-spoolss_DriverFileInfo-relative-po.patch
+bug_611177-617429_upstream_7567_0010-librpc-ndr-handle-NOALIGN-flag-for-relative-pointers.patch
+bug_613624_upstream_7777_0001-First-part-of-fix-for-bug-7777-When-requesting-looku.patch
+bug_613624_upstream_7777_0002-Second-part-of-fix-for-bug-7777-When-requesting-look.patch
+upstream_7880_0001-s3-rpcclient-Fix-bug-7880-cmd_spoolss_deletedriver-r.patch
diff -Nru samba-3.5.6~dfsg/debian/patches/upstream_7880_0001-s3-rpcclient-Fix-bug-7880-cmd_spoolss_deletedriver-r.patch samba-3.5.6~dfsg/debian/patches/upstream_7880_0001-s3-rpcclient-Fix-bug-7880-cmd_spoolss_deletedriver-r.patch
--- samba-3.5.6~dfsg/debian/patches/upstream_7880_0001-s3-rpcclient-Fix-bug-7880-cmd_spoolss_deletedriver-r.patch	1970-01-01 01:00:00.000000000 +0100
+++ samba-3.5.6~dfsg/debian/patches/upstream_7880_0001-s3-rpcclient-Fix-bug-7880-cmd_spoolss_deletedriver-r.patch	2011-03-14 22:03:40.000000000 +0100
@@ -0,0 +1,44 @@
+From a36085eceb70a28cb2f3e69677f9f3d874bd2336 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb@sernet.de>
+Date: Wed, 22 Dec 2010 15:20:29 +0100
+Subject: [PATCH 13/13] s3-rpcclient: Fix bug #7880: cmd_spoolss_deletedriver() returned without checking all architectures.
+
+Continues now with next architecture if no driver is available.
+
+Because of the broken behavior of the rpccli_*() functions,
+we need special error code handling.
+
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+(cherry picked from commit f5af66e67d7c6d62315671c0cf57f47973316226)
+(cherry picked from commit dc63f45b523deb5c3d0c4be4239507e5fc4f6a40)
+---
+ source3/rpcclient/cmd_spoolss.c |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
+index 2d79b11..f83474e 100644
+--- a/source3/rpcclient/cmd_spoolss.c
++++ b/source3/rpcclient/cmd_spoolss.c
+@@ -1893,6 +1893,8 @@ static WERROR cmd_spoolss_deletedriver(struct rpc_pipe_client *cli,
+ 
+ 	/* delete the driver for all architectures */
+ 	for (i=0; archi_table[i].long_archi; i++) {
++		result = WERR_OK;
++
+ 		/* make the call to remove the driver */
+ 		status = rpccli_spoolss_DeletePrinterDriver(cli, mem_ctx,
+ 							    cli->srv_name_slash,
+@@ -1900,7 +1902,9 @@ static WERROR cmd_spoolss_deletedriver(struct rpc_pipe_client *cli,
+ 							    argv[1],
+ 							    &result);
+ 		if (!NT_STATUS_IS_OK(status)) {
+-			return result;
++			if (W_ERROR_IS_OK(result)) {
++				result = ntstatus_to_werror(status);
++			}
+ 		}
+ 		if ( !W_ERROR_IS_OK(result) ) {
+ 			if ( !W_ERROR_EQUAL(result, WERR_UNKNOWN_PRINTER_DRIVER) ) {
+-- 
+1.7.4.1
+

Attachment: signature.asc
Description: Digital signature


Reply to: