[PATCH 3/3] NDR: add regenerated files

Matthieu Patou mat at matws.net
Wed Nov 18 15:41:40 MST 2009


---
 librpc/gen_ndr/ndr_drsblobs.c |   24 +++
 librpc/gen_ndr/ndr_krb5pac.c  |    3 +
 librpc/gen_ndr/ndr_ntlmssp.c  |   30 +++
 librpc/gen_ndr/ndr_security.c |   12 ++
 librpc/gen_ndr/ndr_spoolss.c  |  414 +++++++++++++++++++++++++++++++++++++++++
 librpc/gen_ndr/ndr_svcctl.c   |   24 +++
 6 files changed, 507 insertions(+), 0 deletions(-)

diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
index 39c3057..8fd3725 100644
--- a/librpc/gen_ndr/ndr_drsblobs.c
+++ b/librpc/gen_ndr/ndr_drsblobs.c
@@ -584,6 +584,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo1(struct ndr_pull *ndr, int ndr_fl
 				NDR_CHECK(ndr_pull_repsFromTo1OtherInfo(ndr, NDR_SCALARS, r->other_info));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_info_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 		}
 		ndr->flags = _flags_save_STRUCT;
@@ -729,6 +732,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dns_name1));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name1_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -744,6 +750,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dns_name2));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name2_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -856,6 +865,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2(struct ndr_pull *ndr, int ndr_fl
 				NDR_CHECK(ndr_pull_repsFromTo2OtherInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->other_info));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_info_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 		}
 		ndr->flags = _flags_save_STRUCT;
@@ -1848,6 +1860,9 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosString(struct ndr_pull
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1949,6 +1964,9 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey3(struct ndr_pull *n
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_DATA_BLOB;
 		}
@@ -2176,6 +2194,9 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey4(struct ndr_pull *n
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_DATA_BLOB;
 		}
@@ -3046,6 +3067,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_trustCurrentPasswords(struct ndr_pull *ndr,
 				NDR_CHECK(ndr_pull_AuthenticationInformation(ndr, NDR_SCALARS, r->current[cntr_current_0]));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_current_1, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 		}
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_current_0, 0);
diff --git a/librpc/gen_ndr/ndr_krb5pac.c b/librpc/gen_ndr/ndr_krb5pac.c
index 0f4cfef..9697475 100644
--- a/librpc/gen_ndr/ndr_krb5pac.c
+++ b/librpc/gen_ndr/ndr_krb5pac.c
@@ -590,6 +590,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_PAC_BUFFER_RAW(struct ndr_pull *ndr, int ndr
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_DATA_BLOB_REM;
 		}
diff --git a/librpc/gen_ndr/ndr_ntlmssp.c b/librpc/gen_ndr/ndr_ntlmssp.c
index b863826..daef2e7 100644
--- a/librpc/gen_ndr/ndr_ntlmssp.c
+++ b/librpc/gen_ndr/ndr_ntlmssp.c
@@ -376,6 +376,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -396,6 +399,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1093,6 +1099,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int
 					}
 					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetName_0, 0);
 					ndr->offset = _relative_save_offset;
+					if (ndr->offset > ndr->relative_highest_offset) {
+						ndr->relative_highest_offset = ndr->offset;
+					}
 				}
 				ndr->flags = _flags_save_string;
 			}
@@ -1110,6 +1119,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetInfo_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
 		}
@@ -1852,6 +1864,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LmChallengeResponse_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			if (r->NtChallengeResponse) {
 				uint32_t _relative_save_offset;
@@ -1868,6 +1883,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_NtChallengeResponse_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			{
 				uint32_t _flags_save_string = ndr->flags;
@@ -1886,6 +1904,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 					}
 					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
 					ndr->offset = _relative_save_offset;
+					if (ndr->offset > ndr->relative_highest_offset) {
+						ndr->relative_highest_offset = ndr->offset;
+					}
 				}
 				ndr->flags = _flags_save_string;
 			}
@@ -1906,6 +1927,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 					}
 					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_UserName_0, 0);
 					ndr->offset = _relative_save_offset;
+					if (ndr->offset > ndr->relative_highest_offset) {
+						ndr->relative_highest_offset = ndr->offset;
+					}
 				}
 				ndr->flags = _flags_save_string;
 			}
@@ -1926,6 +1950,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 					}
 					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
 					ndr->offset = _relative_save_offset;
+					if (ndr->offset > ndr->relative_highest_offset) {
+						ndr->relative_highest_offset = ndr->offset;
+					}
 				}
 				ndr->flags = _flags_save_string;
 			}
@@ -1943,6 +1970,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, i
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_EncryptedRandomSessionKey_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
 		}
diff --git a/librpc/gen_ndr/ndr_security.c b/librpc/gen_ndr/ndr_security.c
index e20776b..ccdb457 100644
--- a/librpc/gen_ndr/ndr_security.c
+++ b/librpc/gen_ndr/ndr_security.c
@@ -708,6 +708,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->owner_sid));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_owner_sid_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			if (r->group_sid) {
 				uint32_t _relative_save_offset;
@@ -718,6 +721,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->group_sid));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_sid_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			if (r->sacl) {
 				uint32_t _relative_save_offset;
@@ -728,6 +734,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->sacl));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sacl_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			if (r->dacl) {
 				uint32_t _relative_save_offset;
@@ -738,6 +747,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->dacl));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dacl_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 		}
 		ndr->flags = _flags_save_STRUCT;
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index fb452bc..23ff83f 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -450,6 +450,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -465,6 +468,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1396,6 +1402,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1411,6 +1420,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1426,6 +1438,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->comment));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1870,6 +1885,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1885,6 +1903,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1900,6 +1921,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sharename));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1915,6 +1939,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->portname));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1930,6 +1957,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->drivername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_drivername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1945,6 +1975,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->comment));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1960,6 +1993,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->location));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_location_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1977,6 +2013,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 		{
 			uint32_t _flags_save_string = ndr->flags;
@@ -1990,6 +2029,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sepfile));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sepfile_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2005,6 +2047,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printprocessor));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printprocessor_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2020,6 +2065,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->datatype));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2035,6 +2083,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2052,6 +2103,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -2206,6 +2260,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo3(struct ndr_pull *ndr, i
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -2319,6 +2376,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2334,6 +2394,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2460,6 +2523,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2475,6 +2541,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->portname));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2633,6 +2702,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo7(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->guid));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_guid_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -2710,6 +2782,9 @@ static enum ndr_err_code ndr_pull_spoolss_DeviceModeInfo(struct ndr_pull *ndr, i
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -3320,6 +3395,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3335,6 +3413,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3350,6 +3431,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3365,6 +3449,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3380,6 +3467,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3395,6 +3485,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3830,6 +3923,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3845,6 +3941,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3860,6 +3959,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3875,6 +3977,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3890,6 +3995,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->notify_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3905,6 +4013,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3920,6 +4031,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3935,6 +4049,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3950,6 +4067,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3962,6 +4082,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 			NDR_CHECK(ndr_pull_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 		{
 			uint32_t _flags_save_string = ndr->flags;
@@ -3975,6 +4098,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -3987,6 +4113,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
 			NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -4505,6 +4634,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4520,6 +4652,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4535,6 +4670,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4550,6 +4688,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4565,6 +4706,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->notify_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4580,6 +4724,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4595,6 +4742,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4610,6 +4760,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4625,6 +4778,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4637,6 +4793,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 			NDR_CHECK(ndr_pull_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 		{
 			uint32_t _flags_save_string = ndr->flags;
@@ -4650,6 +4809,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -4662,6 +4824,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
 			NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -10469,6 +10634,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo1(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -10671,6 +10839,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -10686,6 +10857,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -10701,6 +10875,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -10716,6 +10893,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -10731,6 +10911,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11074,6 +11257,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11089,6 +11275,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11104,6 +11293,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11119,6 +11311,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11134,6 +11329,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11149,6 +11347,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11164,6 +11365,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -11179,6 +11383,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11194,6 +11401,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11590,6 +11800,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11605,6 +11818,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11620,6 +11836,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11635,6 +11854,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11650,6 +11872,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11665,6 +11890,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11680,6 +11908,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -11695,6 +11926,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11710,6 +11944,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -11725,6 +11962,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -11988,6 +12228,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12003,6 +12246,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12018,6 +12264,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12033,6 +12282,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12048,6 +12300,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12543,6 +12798,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12558,6 +12816,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12573,6 +12834,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12588,6 +12852,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12603,6 +12870,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12618,6 +12888,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12633,6 +12906,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -12648,6 +12924,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12663,6 +12942,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12678,6 +12960,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -12693,6 +12978,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12708,6 +12996,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_url));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12723,6 +13014,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->hardware_id));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -12738,6 +13032,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->provider));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13437,6 +13734,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13452,6 +13752,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13467,6 +13770,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13482,6 +13788,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13497,6 +13806,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13512,6 +13824,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13527,6 +13842,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13542,6 +13860,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13557,6 +13878,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -13572,6 +13896,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -13587,6 +13914,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13602,6 +13932,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_url));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13617,6 +13950,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->hardware_id));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13632,6 +13968,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->provider));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13647,6 +13986,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13662,6 +14004,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->vendor_setup));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_vendor_setup_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13677,6 +14022,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->color_profiles));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_color_profiles_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -13692,6 +14040,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->inf_path));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_inf_path_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -13707,6 +14058,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->core_driver_dependencies));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_core_driver_dependencies_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string_array;
 		}
@@ -13937,6 +14291,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverFileInfo(struct ndr_pull *ndr,
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->file_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_file_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -14506,6 +14863,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorInfo1(struct ndr_pull
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -15536,6 +15896,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo1(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->form_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -15746,6 +16109,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->form_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -15761,6 +16127,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->keyword));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyword_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -15776,6 +16145,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->mui_dll));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_mui_dll_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -15791,6 +16163,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16399,6 +16774,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo1(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16570,6 +16948,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16585,6 +16966,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16600,6 +16984,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16764,6 +17151,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo3(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->status_string));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_status_string_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -16852,6 +17242,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfoFF(struct ndr_pull *ndr, int
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -17095,6 +17488,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo1(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -17237,6 +17633,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -17252,6 +17651,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->environment));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -17267,6 +17669,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dll_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dll_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -17473,6 +17878,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo1(struct ndr_p
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name_array));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_array_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -19138,6 +19546,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->value_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -19156,6 +19567,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *n
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 	}
 	ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
diff --git a/librpc/gen_ndr/ndr_svcctl.c b/librpc/gen_ndr/ndr_svcctl.c
index 4a81cc6..afe0b27 100644
--- a/librpc/gen_ndr/ndr_svcctl.c
+++ b/librpc/gen_ndr/ndr_svcctl.c
@@ -310,6 +310,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -325,6 +328,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -447,6 +453,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -462,6 +471,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, i
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1065,6 +1077,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, in
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1267,6 +1282,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1282,6 +1300,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
 				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
 				ndr->offset = _relative_save_offset;
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 			}
 			ndr->flags = _flags_save_string;
 		}
@@ -1301,6 +1322,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
 			ndr->offset = _relative_save_offset;
+			if (ndr->offset > ndr->relative_highest_offset) {
+				ndr->relative_highest_offset = ndr->offset;
+			}
 		}
 		if (r->actions) {
 			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
-- 
1.6.3.3


--------------050004030801070604070402
Content-Type: text/x-patch;
 name="0001-hack-_all-with-relative-pointers.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="0001-hack-_all-with-relative-pointers.patch"



More information about the samba-technical mailing list