s3-build: re-run make samba3-idl.
[kai/samba.git] / source3 / librpc / gen_ndr / ndr_samr.c
index 13227f75d140f9acaf49cff35a3dedf15daad42d..40082e7f04d39ddc726adc68a68f0d5d4b031ae7 100644 (file)
@@ -6,6 +6,59 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/gen_ndr/ndr_lsa.h"
 #include "librpc/gen_ndr/ndr_security.h"
+_PUBLIC_ enum ndr_err_code ndr_push_netr_SamDatabaseID(struct ndr_push *ndr, int ndr_flags, enum netr_SamDatabaseID r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_netr_SamDatabaseID(struct ndr_pull *ndr, int ndr_flags, enum netr_SamDatabaseID *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_netr_SamDatabaseID(struct ndr_print *ndr, const char *name, enum netr_SamDatabaseID r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case SAM_DATABASE_DOMAIN: val = "SAM_DATABASE_DOMAIN"; break;
+               case SAM_DATABASE_BUILTIN: val = "SAM_DATABASE_BUILTIN"; break;
+               case SAM_DATABASE_PRIVS: val = "SAM_DATABASE_PRIVS"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_samr_RejectReason(struct ndr_push *ndr, int ndr_flags, enum samr_RejectReason r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_samr_RejectReason(struct ndr_pull *ndr, int ndr_flags, enum samr_RejectReason *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_samr_RejectReason(struct ndr_print *ndr, const char *name, enum samr_RejectReason r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case SAMR_REJECT_OTHER: val = "SAMR_REJECT_OTHER"; break;
+               case SAMR_REJECT_TOO_SHORT: val = "SAMR_REJECT_TOO_SHORT"; break;
+               case SAMR_REJECT_IN_HISTORY: val = "SAMR_REJECT_IN_HISTORY"; break;
+               case SAMR_REJECT_COMPLEXITY: val = "SAMR_REJECT_COMPLEXITY"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_samr_AcctFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 {
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
@@ -295,12 +348,11 @@ _PUBLIC_ void ndr_print_samr_SamArray(struct ndr_print *ndr, const char *name, c
        ndr_print_ptr(ndr, "entries", r->entries);
        ndr->depth++;
        if (r->entries) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
                ndr->depth++;
                for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_entries_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
                                ndr_print_samr_SamEntry(ndr, "entries", &r->entries[cntr_entries_1]);
                                free(idx_1);
                        }
@@ -407,12 +459,12 @@ _PUBLIC_ void ndr_print_samr_DomInfo1(struct ndr_print *ndr, const char *name, c
        ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_samr_DomInfo2(struct ndr_push *ndr, int ndr_flags, const struct samr_DomInfo2 *r)
+static enum ndr_err_code ndr_push_samr_DomGeneralInformation(struct ndr_push *ndr, int ndr_flags, const struct samr_DomGeneralInformation *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->force_logoff_time));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->primary));
                NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
@@ -424,19 +476,19 @@ static enum ndr_err_code ndr_push_samr_DomInfo2(struct ndr_push *ndr, int ndr_fl
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_aliases));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->primary));
        }
        return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_samr_DomInfo2(struct ndr_pull *ndr, int ndr_flags, struct samr_DomInfo2 *r)
+static enum ndr_err_code ndr_pull_samr_DomGeneralInformation(struct ndr_pull *ndr, int ndr_flags, struct samr_DomGeneralInformation *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->force_logoff_time));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->primary));
                NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
@@ -448,19 +500,19 @@ static enum ndr_err_code ndr_pull_samr_DomInfo2(struct ndr_pull *ndr, int ndr_fl
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_aliases));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->primary));
        }
        return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_samr_DomInfo2(struct ndr_print *ndr, const char *name, const struct samr_DomInfo2 *r)
+_PUBLIC_ void ndr_print_samr_DomGeneralInformation(struct ndr_print *ndr, const char *name, const struct samr_DomGeneralInformation *r)
 {
-       ndr_print_struct(ndr, name, "samr_DomInfo2");
+       ndr_print_struct(ndr, name, "samr_DomGeneralInformation");
        ndr->depth++;
        ndr_print_NTTIME(ndr, "force_logoff_time", r->force_logoff_time);
-       ndr_print_lsa_String(ndr, "comment", &r->comment);
+       ndr_print_lsa_String(ndr, "oem_information", &r->oem_information);
        ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
        ndr_print_lsa_String(ndr, "primary", &r->primary);
        ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
@@ -503,35 +555,35 @@ _PUBLIC_ void ndr_print_samr_DomInfo3(struct ndr_print *ndr, const char *name, c
        ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_samr_DomInfo4(struct ndr_push *ndr, int ndr_flags, const struct samr_DomInfo4 *r)
+static enum ndr_err_code ndr_push_samr_DomOEMInformation(struct ndr_push *ndr, int ndr_flags, const struct samr_DomOEMInformation *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
        }
        return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_samr_DomInfo4(struct ndr_pull *ndr, int ndr_flags, struct samr_DomInfo4 *r)
+static enum ndr_err_code ndr_pull_samr_DomOEMInformation(struct ndr_pull *ndr, int ndr_flags, struct samr_DomOEMInformation *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
        }
        return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_samr_DomInfo4(struct ndr_print *ndr, const char *name, const struct samr_DomInfo4 *r)
+_PUBLIC_ void ndr_print_samr_DomOEMInformation(struct ndr_print *ndr, const char *name, const struct samr_DomOEMInformation *r)
 {
-       ndr_print_struct(ndr, name, "samr_DomInfo4");
+       ndr_print_struct(ndr, name, "samr_DomOEMInformation");
        ndr->depth++;
-       ndr_print_lsa_String(ndr, "comment", &r->comment);
+       ndr_print_lsa_String(ndr, "oem_information", &r->oem_information);
        ndr->depth--;
 }
 
@@ -692,41 +744,41 @@ _PUBLIC_ void ndr_print_samr_DomInfo9(struct ndr_print *ndr, const char *name, c
        ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_samr_DomInfo11(struct ndr_push *ndr, int ndr_flags, const struct samr_DomInfo11 *r)
+static enum ndr_err_code ndr_push_samr_DomGeneralInformation2(struct ndr_push *ndr, int ndr_flags, const struct samr_DomGeneralInformation2 *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 8));
-               NDR_CHECK(ndr_push_samr_DomInfo2(ndr, NDR_SCALARS, &r->info2));
+               NDR_CHECK(ndr_push_samr_DomGeneralInformation(ndr, NDR_SCALARS, &r->general));
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->lockout_duration));
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->lockout_window));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lockout_threshold));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_push_samr_DomInfo2(ndr, NDR_BUFFERS, &r->info2));
+               NDR_CHECK(ndr_push_samr_DomGeneralInformation(ndr, NDR_BUFFERS, &r->general));
        }
        return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_samr_DomInfo11(struct ndr_pull *ndr, int ndr_flags, struct samr_DomInfo11 *r)
+static enum ndr_err_code ndr_pull_samr_DomGeneralInformation2(struct ndr_pull *ndr, int ndr_flags, struct samr_DomGeneralInformation2 *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 8));
-               NDR_CHECK(ndr_pull_samr_DomInfo2(ndr, NDR_SCALARS, &r->info2));
+               NDR_CHECK(ndr_pull_samr_DomGeneralInformation(ndr, NDR_SCALARS, &r->general));
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->lockout_duration));
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->lockout_window));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lockout_threshold));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_pull_samr_DomInfo2(ndr, NDR_BUFFERS, &r->info2));
+               NDR_CHECK(ndr_pull_samr_DomGeneralInformation(ndr, NDR_BUFFERS, &r->general));
        }
        return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_samr_DomInfo11(struct ndr_print *ndr, const char *name, const struct samr_DomInfo11 *r)
+_PUBLIC_ void ndr_print_samr_DomGeneralInformation2(struct ndr_print *ndr, const char *name, const struct samr_DomGeneralInformation2 *r)
 {
-       ndr_print_struct(ndr, name, "samr_DomInfo11");
+       ndr_print_struct(ndr, name, "samr_DomGeneralInformation2");
        ndr->depth++;
-       ndr_print_samr_DomInfo2(ndr, "info2", &r->info2);
+       ndr_print_samr_DomGeneralInformation(ndr, "general", &r->general);
        ndr_print_hyper(ndr, "lockout_duration", r->lockout_duration);
        ndr_print_hyper(ndr, "lockout_window", r->lockout_window);
        ndr_print_uint16(ndr, "lockout_threshold", r->lockout_threshold);
@@ -819,7 +871,7 @@ static enum ndr_err_code ndr_push_samr_DomainInfo(struct ndr_push *ndr, int ndr_
                        break; }
 
                        case 2: {
-                               NDR_CHECK(ndr_push_samr_DomInfo2(ndr, NDR_SCALARS, &r->info2));
+                               NDR_CHECK(ndr_push_samr_DomGeneralInformation(ndr, NDR_SCALARS, &r->general));
                        break; }
 
                        case 3: {
@@ -827,7 +879,7 @@ static enum ndr_err_code ndr_push_samr_DomainInfo(struct ndr_push *ndr, int ndr_
                        break; }
 
                        case 4: {
-                               NDR_CHECK(ndr_push_samr_DomInfo4(ndr, NDR_SCALARS, &r->info4));
+                               NDR_CHECK(ndr_push_samr_DomOEMInformation(ndr, NDR_SCALARS, &r->oem));
                        break; }
 
                        case 5: {
@@ -851,7 +903,7 @@ static enum ndr_err_code ndr_push_samr_DomainInfo(struct ndr_push *ndr, int ndr_
                        break; }
 
                        case 11: {
-                               NDR_CHECK(ndr_push_samr_DomInfo11(ndr, NDR_SCALARS, &r->info11));
+                               NDR_CHECK(ndr_push_samr_DomGeneralInformation2(ndr, NDR_SCALARS, &r->general2));
                        break; }
 
                        case 12: {
@@ -873,14 +925,14 @@ static enum ndr_err_code ndr_push_samr_DomainInfo(struct ndr_push *ndr, int ndr_
                        break;
 
                        case 2:
-                               NDR_CHECK(ndr_push_samr_DomInfo2(ndr, NDR_BUFFERS, &r->info2));
+                               NDR_CHECK(ndr_push_samr_DomGeneralInformation(ndr, NDR_BUFFERS, &r->general));
                        break;
 
                        case 3:
                        break;
 
                        case 4:
-                               NDR_CHECK(ndr_push_samr_DomInfo4(ndr, NDR_BUFFERS, &r->info4));
+                               NDR_CHECK(ndr_push_samr_DomOEMInformation(ndr, NDR_BUFFERS, &r->oem));
                        break;
 
                        case 5:
@@ -901,7 +953,7 @@ static enum ndr_err_code ndr_push_samr_DomainInfo(struct ndr_push *ndr, int ndr_
                        break;
 
                        case 11:
-                               NDR_CHECK(ndr_push_samr_DomInfo11(ndr, NDR_BUFFERS, &r->info11));
+                               NDR_CHECK(ndr_push_samr_DomGeneralInformation2(ndr, NDR_BUFFERS, &r->general2));
                        break;
 
                        case 12:
@@ -933,7 +985,7 @@ static enum ndr_err_code ndr_pull_samr_DomainInfo(struct ndr_pull *ndr, int ndr_
                        break; }
 
                        case 2: {
-                               NDR_CHECK(ndr_pull_samr_DomInfo2(ndr, NDR_SCALARS, &r->info2));
+                               NDR_CHECK(ndr_pull_samr_DomGeneralInformation(ndr, NDR_SCALARS, &r->general));
                        break; }
 
                        case 3: {
@@ -941,7 +993,7 @@ static enum ndr_err_code ndr_pull_samr_DomainInfo(struct ndr_pull *ndr, int ndr_
                        break; }
 
                        case 4: {
-                               NDR_CHECK(ndr_pull_samr_DomInfo4(ndr, NDR_SCALARS, &r->info4));
+                               NDR_CHECK(ndr_pull_samr_DomOEMInformation(ndr, NDR_SCALARS, &r->oem));
                        break; }
 
                        case 5: {
@@ -965,7 +1017,7 @@ static enum ndr_err_code ndr_pull_samr_DomainInfo(struct ndr_pull *ndr, int ndr_
                        break; }
 
                        case 11: {
-                               NDR_CHECK(ndr_pull_samr_DomInfo11(ndr, NDR_SCALARS, &r->info11));
+                               NDR_CHECK(ndr_pull_samr_DomGeneralInformation2(ndr, NDR_SCALARS, &r->general2));
                        break; }
 
                        case 12: {
@@ -986,14 +1038,14 @@ static enum ndr_err_code ndr_pull_samr_DomainInfo(struct ndr_pull *ndr, int ndr_
                        break;
 
                        case 2:
-                               NDR_CHECK(ndr_pull_samr_DomInfo2(ndr, NDR_BUFFERS, &r->info2));
+                               NDR_CHECK(ndr_pull_samr_DomGeneralInformation(ndr, NDR_BUFFERS, &r->general));
                        break;
 
                        case 3:
                        break;
 
                        case 4:
-                               NDR_CHECK(ndr_pull_samr_DomInfo4(ndr, NDR_BUFFERS, &r->info4));
+                               NDR_CHECK(ndr_pull_samr_DomOEMInformation(ndr, NDR_BUFFERS, &r->oem));
                        break;
 
                        case 5:
@@ -1014,7 +1066,7 @@ static enum ndr_err_code ndr_pull_samr_DomainInfo(struct ndr_pull *ndr, int ndr_
                        break;
 
                        case 11:
-                               NDR_CHECK(ndr_pull_samr_DomInfo11(ndr, NDR_BUFFERS, &r->info11));
+                               NDR_CHECK(ndr_pull_samr_DomGeneralInformation2(ndr, NDR_BUFFERS, &r->general2));
                        break;
 
                        case 12:
@@ -1041,7 +1093,7 @@ _PUBLIC_ void ndr_print_samr_DomainInfo(struct ndr_print *ndr, const char *name,
                break;
 
                case 2:
-                       ndr_print_samr_DomInfo2(ndr, "info2", &r->info2);
+                       ndr_print_samr_DomGeneralInformation(ndr, "general", &r->general);
                break;
 
                case 3:
@@ -1049,7 +1101,7 @@ _PUBLIC_ void ndr_print_samr_DomainInfo(struct ndr_print *ndr, const char *name,
                break;
 
                case 4:
-                       ndr_print_samr_DomInfo4(ndr, "info4", &r->info4);
+                       ndr_print_samr_DomOEMInformation(ndr, "oem", &r->oem);
                break;
 
                case 5:
@@ -1073,7 +1125,7 @@ _PUBLIC_ void ndr_print_samr_DomainInfo(struct ndr_print *ndr, const char *name,
                break;
 
                case 11:
-                       ndr_print_samr_DomInfo11(ndr, "info11", &r->info11);
+                       ndr_print_samr_DomGeneralInformation2(ndr, "general2", &r->general2);
                break;
 
                case 12:
@@ -1157,12 +1209,11 @@ _PUBLIC_ void ndr_print_samr_Ids(struct ndr_print *ndr, const char *name, const
        ndr_print_ptr(ndr, "ids", r->ids);
        ndr->depth++;
        if (r->ids) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "ids", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "ids", (int)r->count);
                ndr->depth++;
                for (cntr_ids_1=0;cntr_ids_1<r->count;cntr_ids_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_ids_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_ids_1) != -1) {
                                ndr_print_uint32(ndr, "ids", r->ids[cntr_ids_1]);
                                free(idx_1);
                        }
@@ -1555,12 +1606,11 @@ _PUBLIC_ void ndr_print_samr_RidTypeArray(struct ndr_print *ndr, const char *nam
        ndr_print_ptr(ndr, "rids", r->rids);
        ndr->depth++;
        if (r->rids) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "rids", (int)r->count);
                ndr->depth++;
                for (cntr_rids_1=0;cntr_rids_1<r->count;cntr_rids_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_rids_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_rids_1) != -1) {
                                ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_1]);
                                free(idx_1);
                        }
@@ -1571,12 +1621,11 @@ _PUBLIC_ void ndr_print_samr_RidTypeArray(struct ndr_print *ndr, const char *nam
        ndr_print_ptr(ndr, "types", r->types);
        ndr->depth++;
        if (r->types) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "types", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "types", (int)r->count);
                ndr->depth++;
                for (cntr_types_1=0;cntr_types_1<r->count;cntr_types_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_types_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_types_1) != -1) {
                                ndr_print_uint32(ndr, "types", r->types[cntr_types_1]);
                                free(idx_1);
                        }
@@ -2617,10 +2666,10 @@ static enum ndr_err_code ndr_push_samr_UserInfo20(struct ndr_push *ndr, int ndr_
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->parameters));
+               NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
+               NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -2629,10 +2678,10 @@ static enum ndr_err_code ndr_pull_samr_UserInfo20(struct ndr_pull *ndr, int ndr_
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->parameters));
+               NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
+               NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -2641,7 +2690,7 @@ _PUBLIC_ void ndr_print_samr_UserInfo20(struct ndr_print *ndr, const char *name,
 {
        ndr_print_struct(ndr, name, "samr_UserInfo20");
        ndr->depth++;
-       ndr_print_lsa_String(ndr, "parameters", &r->parameters);
+       ndr_print_lsa_BinaryString(ndr, "parameters", &r->parameters);
        ndr->depth--;
 }
 
@@ -2715,7 +2764,7 @@ static enum ndr_err_code ndr_push_samr_UserInfo21(struct ndr_push *ndr, int ndr_
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstations));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->parameters));
+               NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
@@ -2745,7 +2794,7 @@ static enum ndr_err_code ndr_push_samr_UserInfo21(struct ndr_push *ndr, int ndr_
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
+               NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
                NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
@@ -2779,7 +2828,7 @@ static enum ndr_err_code ndr_pull_samr_UserInfo21(struct ndr_pull *ndr, int ndr_
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstations));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->parameters));
+               NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
@@ -2814,7 +2863,7 @@ static enum ndr_err_code ndr_pull_samr_UserInfo21(struct ndr_pull *ndr, int ndr_
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
+               NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
                NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
@@ -2853,7 +2902,7 @@ _PUBLIC_ void ndr_print_samr_UserInfo21(struct ndr_print *ndr, const char *name,
        ndr_print_lsa_String(ndr, "description", &r->description);
        ndr_print_lsa_String(ndr, "workstations", &r->workstations);
        ndr_print_lsa_String(ndr, "comment", &r->comment);
-       ndr_print_lsa_String(ndr, "parameters", &r->parameters);
+       ndr_print_lsa_BinaryString(ndr, "parameters", &r->parameters);
        ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
        ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
        ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
@@ -2965,7 +3014,7 @@ static enum ndr_err_code ndr_push_samr_UserInfo24(struct ndr_push *ndr, int ndr_
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 1));
                NDR_CHECK(ndr_push_samr_CryptPassword(ndr, NDR_SCALARS, &r->password));
-               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->pw_len));
+               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->password_expired));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -2977,7 +3026,7 @@ static enum ndr_err_code ndr_pull_samr_UserInfo24(struct ndr_pull *ndr, int ndr_
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 1));
                NDR_CHECK(ndr_pull_samr_CryptPassword(ndr, NDR_SCALARS, &r->password));
-               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->pw_len));
+               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->password_expired));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -2989,7 +3038,7 @@ _PUBLIC_ void ndr_print_samr_UserInfo24(struct ndr_print *ndr, const char *name,
        ndr_print_struct(ndr, name, "samr_UserInfo24");
        ndr->depth++;
        ndr_print_samr_CryptPassword(ndr, "password", &r->password);
-       ndr_print_uint8(ndr, "pw_len", r->pw_len);
+       ndr_print_uint8(ndr, "password_expired", r->password_expired);
        ndr->depth--;
 }
 
@@ -3078,7 +3127,7 @@ static enum ndr_err_code ndr_push_samr_UserInfo26(struct ndr_push *ndr, int ndr_
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 1));
                NDR_CHECK(ndr_push_samr_CryptPasswordEx(ndr, NDR_SCALARS, &r->password));
-               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->pw_len));
+               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->password_expired));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -3090,7 +3139,7 @@ static enum ndr_err_code ndr_pull_samr_UserInfo26(struct ndr_pull *ndr, int ndr_
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 1));
                NDR_CHECK(ndr_pull_samr_CryptPasswordEx(ndr, NDR_SCALARS, &r->password));
-               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->pw_len));
+               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->password_expired));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -3102,7 +3151,7 @@ _PUBLIC_ void ndr_print_samr_UserInfo26(struct ndr_print *ndr, const char *name,
        ndr_print_struct(ndr, name, "samr_UserInfo26");
        ndr->depth++;
        ndr_print_samr_CryptPasswordEx(ndr, "password", &r->password);
-       ndr_print_uint8(ndr, "pw_len", r->pw_len);
+       ndr_print_uint8(ndr, "password_expired", r->password_expired);
        ndr->depth--;
 }
 
@@ -3707,12 +3756,11 @@ _PUBLIC_ void ndr_print_samr_RidWithAttributeArray(struct ndr_print *ndr, const
        ndr_print_ptr(ndr, "rids", r->rids);
        ndr->depth++;
        if (r->rids) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "rids", (int)r->count);
                ndr->depth++;
                for (cntr_rids_1=0;cntr_rids_1<r->count;cntr_rids_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_rids_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_rids_1) != -1) {
                                ndr_print_samr_RidWithAttribute(ndr, "rids", &r->rids[cntr_rids_1]);
                                free(idx_1);
                        }
@@ -3845,12 +3893,11 @@ _PUBLIC_ void ndr_print_samr_DispInfoGeneral(struct ndr_print *ndr, const char *
        ndr_print_ptr(ndr, "entries", r->entries);
        ndr->depth++;
        if (r->entries) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
                ndr->depth++;
                for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_entries_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
                                ndr_print_samr_DispEntryGeneral(ndr, "entries", &r->entries[cntr_entries_1]);
                                free(idx_1);
                        }
@@ -3978,12 +4025,11 @@ _PUBLIC_ void ndr_print_samr_DispInfoFull(struct ndr_print *ndr, const char *nam
        ndr_print_ptr(ndr, "entries", r->entries);
        ndr->depth++;
        if (r->entries) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
                ndr->depth++;
                for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_entries_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
                                ndr_print_samr_DispEntryFull(ndr, "entries", &r->entries[cntr_entries_1]);
                                free(idx_1);
                        }
@@ -4111,12 +4157,11 @@ _PUBLIC_ void ndr_print_samr_DispInfoFullGroups(struct ndr_print *ndr, const cha
        ndr_print_ptr(ndr, "entries", r->entries);
        ndr->depth++;
        if (r->entries) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
                ndr->depth++;
                for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_entries_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
                                ndr_print_samr_DispEntryFullGroup(ndr, "entries", &r->entries[cntr_entries_1]);
                                free(idx_1);
                        }
@@ -4132,10 +4177,10 @@ static enum ndr_err_code ndr_push_samr_DispEntryAscii(struct ndr_push *ndr, int
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->idx));
-               NDR_CHECK(ndr_push_lsa_AsciiString(ndr, NDR_SCALARS, &r->account_name));
+               NDR_CHECK(ndr_push_lsa_AsciiStringLarge(ndr, NDR_SCALARS, &r->account_name));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_push_lsa_AsciiString(ndr, NDR_BUFFERS, &r->account_name));
+               NDR_CHECK(ndr_push_lsa_AsciiStringLarge(ndr, NDR_BUFFERS, &r->account_name));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -4145,10 +4190,10 @@ static enum ndr_err_code ndr_pull_samr_DispEntryAscii(struct ndr_pull *ndr, int
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->idx));
-               NDR_CHECK(ndr_pull_lsa_AsciiString(ndr, NDR_SCALARS, &r->account_name));
+               NDR_CHECK(ndr_pull_lsa_AsciiStringLarge(ndr, NDR_SCALARS, &r->account_name));
        }
        if (ndr_flags & NDR_BUFFERS) {
-               NDR_CHECK(ndr_pull_lsa_AsciiString(ndr, NDR_BUFFERS, &r->account_name));
+               NDR_CHECK(ndr_pull_lsa_AsciiStringLarge(ndr, NDR_BUFFERS, &r->account_name));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -4158,7 +4203,7 @@ _PUBLIC_ void ndr_print_samr_DispEntryAscii(struct ndr_print *ndr, const char *n
        ndr_print_struct(ndr, name, "samr_DispEntryAscii");
        ndr->depth++;
        ndr_print_uint32(ndr, "idx", r->idx);
-       ndr_print_lsa_AsciiString(ndr, "account_name", &r->account_name);
+       ndr_print_lsa_AsciiStringLarge(ndr, "account_name", &r->account_name);
        ndr->depth--;
 }
 
@@ -4233,12 +4278,11 @@ _PUBLIC_ void ndr_print_samr_DispInfoAscii(struct ndr_print *ndr, const char *na
        ndr_print_ptr(ndr, "entries", r->entries);
        ndr->depth++;
        if (r->entries) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "entries", r->count);
+               ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
                ndr->depth++;
                for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_entries_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
                                ndr_print_samr_DispEntryAscii(ndr, "entries", &r->entries[cntr_entries_1]);
                                free(idx_1);
                        }
@@ -4836,12 +4880,11 @@ _PUBLIC_ void ndr_print_samr_ValidatePasswordInfo(struct ndr_print *ndr, const c
        ndr_print_ptr(ndr, "pwd_history", r->pwd_history);
        ndr->depth++;
        if (r->pwd_history) {
-               ndr->print(ndr, "%s: ARRAY(%d)", "pwd_history", r->pwd_history_len);
+               ndr->print(ndr, "%s: ARRAY(%d)", "pwd_history", (int)r->pwd_history_len);
                ndr->depth++;
                for (cntr_pwd_history_1=0;cntr_pwd_history_1<r->pwd_history_len;cntr_pwd_history_1++) {
                        char *idx_1=NULL;
-                       asprintf(&idx_1, "[%d]", cntr_pwd_history_1);
-                       if (idx_1) {
+                       if (asprintf(&idx_1, "[%d]", cntr_pwd_history_1) != -1) {
                                ndr_print_samr_ValidationBlob(ndr, "pwd_history", &r->pwd_history[cntr_pwd_history_1]);
                                free(idx_1);
                        }
@@ -6333,7 +6376,10 @@ static enum ndr_err_code ndr_push_samr_EnumDomainGroups(struct ndr_push *ndr, in
                if (r->out.sam == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sam));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.sam));
+               if (*r->out.sam) {
+                       NDR_CHECK(ndr_push_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sam));
+               }
                if (r->out.num_entries == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
@@ -6345,9 +6391,11 @@ static enum ndr_err_code ndr_push_samr_EnumDomainGroups(struct ndr_push *ndr, in
 
 static enum ndr_err_code ndr_pull_samr_EnumDomainGroups(struct ndr_pull *ndr, int flags, struct samr_EnumDomainGroups *r)
 {
+       uint32_t _ptr_sam;
        TALLOC_CTX *_mem_save_domain_handle_0;
        TALLOC_CTX *_mem_save_resume_handle_0;
        TALLOC_CTX *_mem_save_sam_0;
+       TALLOC_CTX *_mem_save_sam_1;
        TALLOC_CTX *_mem_save_num_entries_0;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
@@ -6387,7 +6435,18 @@ static enum ndr_err_code ndr_pull_samr_EnumDomainGroups(struct ndr_pull *ndr, in
                }
                _mem_save_sam_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.sam, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sam));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam));
+               if (_ptr_sam) {
+                       NDR_PULL_ALLOC(ndr, *r->out.sam);
+               } else {
+                       *r->out.sam = NULL;
+               }
+               if (*r->out.sam) {
+                       _mem_save_sam_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.sam, 0);
+                       NDR_CHECK(ndr_pull_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sam));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_0, LIBNDR_FLAG_REF_ALLOC);
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
                        NDR_PULL_ALLOC(ndr, r->out.num_entries);
@@ -6431,7 +6490,12 @@ _PUBLIC_ void ndr_print_samr_EnumDomainGroups(struct ndr_print *ndr, const char
                ndr->depth--;
                ndr_print_ptr(ndr, "sam", r->out.sam);
                ndr->depth++;
-               ndr_print_samr_SamArray(ndr, "sam", r->out.sam);
+               ndr_print_ptr(ndr, "sam", *r->out.sam);
+               ndr->depth++;
+               if (*r->out.sam) {
+                       ndr_print_samr_SamArray(ndr, "sam", *r->out.sam);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_ptr(ndr, "num_entries", r->out.num_entries);
                ndr->depth++;
@@ -6837,7 +6901,7 @@ static enum ndr_err_code ndr_push_samr_EnumDomainAliases(struct ndr_push *ndr, i
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
-               NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->in.acct_flags));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_size));
        }
        if (flags & NDR_OUT) {
                if (r->out.resume_handle == NULL) {
@@ -6847,7 +6911,10 @@ static enum ndr_err_code ndr_push_samr_EnumDomainAliases(struct ndr_push *ndr, i
                if (r->out.sam == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sam));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.sam));
+               if (*r->out.sam) {
+                       NDR_CHECK(ndr_push_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sam));
+               }
                if (r->out.num_entries == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
@@ -6859,9 +6926,11 @@ static enum ndr_err_code ndr_push_samr_EnumDomainAliases(struct ndr_push *ndr, i
 
 static enum ndr_err_code ndr_pull_samr_EnumDomainAliases(struct ndr_pull *ndr, int flags, struct samr_EnumDomainAliases *r)
 {
+       uint32_t _ptr_sam;
        TALLOC_CTX *_mem_save_domain_handle_0;
        TALLOC_CTX *_mem_save_resume_handle_0;
        TALLOC_CTX *_mem_save_sam_0;
+       TALLOC_CTX *_mem_save_sam_1;
        TALLOC_CTX *_mem_save_num_entries_0;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
@@ -6880,7 +6949,7 @@ static enum ndr_err_code ndr_pull_samr_EnumDomainAliases(struct ndr_pull *ndr, i
                NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->in.acct_flags));
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_size));
                NDR_PULL_ALLOC(ndr, r->out.resume_handle);
                *r->out.resume_handle = *r->in.resume_handle;
                NDR_PULL_ALLOC(ndr, r->out.sam);
@@ -6901,7 +6970,18 @@ static enum ndr_err_code ndr_pull_samr_EnumDomainAliases(struct ndr_pull *ndr, i
                }
                _mem_save_sam_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.sam, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sam));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam));
+               if (_ptr_sam) {
+                       NDR_PULL_ALLOC(ndr, *r->out.sam);
+               } else {
+                       *r->out.sam = NULL;
+               }
+               if (*r->out.sam) {
+                       _mem_save_sam_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.sam, 0);
+                       NDR_CHECK(ndr_pull_samr_SamArray(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sam));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_0, LIBNDR_FLAG_REF_ALLOC);
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
                        NDR_PULL_ALLOC(ndr, r->out.num_entries);
@@ -6933,7 +7013,7 @@ _PUBLIC_ void ndr_print_samr_EnumDomainAliases(struct ndr_print *ndr, const char
                ndr->depth++;
                ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
                ndr->depth--;
-               ndr_print_samr_AcctFlags(ndr, "acct_flags", r->in.acct_flags);
+               ndr_print_uint32(ndr, "max_size", r->in.max_size);
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
@@ -6945,7 +7025,12 @@ _PUBLIC_ void ndr_print_samr_EnumDomainAliases(struct ndr_print *ndr, const char
                ndr->depth--;
                ndr_print_ptr(ndr, "sam", r->out.sam);
                ndr->depth++;
-               ndr_print_samr_SamArray(ndr, "sam", r->out.sam);
+               ndr_print_ptr(ndr, "sam", *r->out.sam);
+               ndr->depth++;
+               if (*r->out.sam) {
+                       ndr_print_samr_SamArray(ndr, "sam", *r->out.sam);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_ptr(ndr, "num_entries", r->out.num_entries);
                ndr->depth++;
@@ -7166,12 +7251,11 @@ _PUBLIC_ void ndr_print_samr_LookupNames(struct ndr_print *ndr, const char *name
                ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
                ndr->depth--;
                ndr_print_uint32(ndr, "num_names", r->in.num_names);
-               ndr->print(ndr, "%s: ARRAY(%d)", "names", r->in.num_names);
+               ndr->print(ndr, "%s: ARRAY(%d)", "names", (int)r->in.num_names);
                ndr->depth++;
                for (cntr_names_0=0;cntr_names_0<r->in.num_names;cntr_names_0++) {
                        char *idx_0=NULL;
-                       asprintf(&idx_0, "[%d]", cntr_names_0);
-                       if (idx_0) {
+                       if (asprintf(&idx_0, "[%d]", cntr_names_0) != -1) {
                                ndr_print_lsa_String(ndr, "names", &r->in.names[cntr_names_0]);
                                free(idx_0);
                        }
@@ -7306,12 +7390,11 @@ _PUBLIC_ void ndr_print_samr_LookupRids(struct ndr_print *ndr, const char *name,
                ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
                ndr->depth--;
                ndr_print_uint32(ndr, "num_rids", r->in.num_rids);
-               ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->in.num_rids);
+               ndr->print(ndr, "%s: ARRAY(%d)", "rids", (int)r->in.num_rids);
                ndr->depth++;
                for (cntr_rids_0=0;cntr_rids_0<r->in.num_rids;cntr_rids_0++) {
                        char *idx_0=NULL;
-                       asprintf(&idx_0, "[%d]", cntr_rids_0);
-                       if (idx_0) {
+                       if (asprintf(&idx_0, "[%d]", cntr_rids_0) != -1) {
                                ndr_print_uint32(ndr, "rids", r->in.rids[cntr_rids_0]);
                                free(idx_0);
                        }
@@ -8699,8 +8782,11 @@ _PUBLIC_ enum ndr_err_code ndr_push_samr_QueryUserInfo(struct ndr_push *ndr, int
                if (r->out.info == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_push_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
+               if (*r->out.info) {
+                       NDR_CHECK(ndr_push_set_switch_value(ndr, *r->out.info, r->in.level));
+                       NDR_CHECK(ndr_push_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
+               }
                NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -8708,8 +8794,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_samr_QueryUserInfo(struct ndr_push *ndr, int
 
 _PUBLIC_ enum ndr_err_code ndr_pull_samr_QueryUserInfo(struct ndr_pull *ndr, int flags, struct samr_QueryUserInfo *r)
 {
+       uint32_t _ptr_info;
        TALLOC_CTX *_mem_save_user_handle_0;
        TALLOC_CTX *_mem_save_info_0;
+       TALLOC_CTX *_mem_save_info_1;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
 
@@ -8730,8 +8818,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_samr_QueryUserInfo(struct ndr_pull *ndr, int
                }
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_pull_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
+               if (_ptr_info) {
+                       NDR_PULL_ALLOC(ndr, *r->out.info);
+               } else {
+                       *r->out.info = NULL;
+               }
+               if (*r->out.info) {
+                       _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
+                       NDR_CHECK(ndr_pull_set_switch_value(ndr, *r->out.info, r->in.level));
+                       NDR_CHECK(ndr_pull_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
        }
@@ -8760,8 +8859,13 @@ _PUBLIC_ void ndr_print_samr_QueryUserInfo(struct ndr_print *ndr, const char *na
                ndr->depth++;
                ndr_print_ptr(ndr, "info", r->out.info);
                ndr->depth++;
-               ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
-               ndr_print_samr_UserInfo(ndr, "info", r->out.info);
+               ndr_print_ptr(ndr, "info", *r->out.info);
+               ndr->depth++;
+               if (*r->out.info) {
+                       ndr_print_set_switch_value(ndr, *r->out.info, r->in.level);
+                       ndr_print_samr_UserInfo(ndr, "info", *r->out.info);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_NTSTATUS(ndr, "result", r->out.result);
                ndr->depth--;
@@ -9295,7 +9399,10 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex(struct ndr_pus
                }
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+               if (r->in.name == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
        }
        if (flags & NDR_OUT) {
                if (r->out.idx == NULL) {
@@ -9310,6 +9417,7 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex(struct ndr_pus
 static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex(struct ndr_pull *ndr, int flags, struct samr_GetDisplayEnumerationIndex *r)
 {
        TALLOC_CTX *_mem_save_domain_handle_0;
+       TALLOC_CTX *_mem_save_name_0;
        TALLOC_CTX *_mem_save_idx_0;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
@@ -9322,7 +9430,13 @@ static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex(struct ndr_pul
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_handle_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.name);
+               }
+               _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_PULL_ALLOC(ndr, r->out.idx);
                ZERO_STRUCTP(r->out.idx);
        }
@@ -9354,7 +9468,10 @@ _PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex(struct ndr_print *ndr, c
                ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
                ndr->depth--;
                ndr_print_uint16(ndr, "level", r->in.level);
-               ndr_print_lsa_String(ndr, "name", &r->in.name);
+               ndr_print_ptr(ndr, "name", r->in.name);
+               ndr->depth++;
+               ndr_print_lsa_String(ndr, "name", r->in.name);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
@@ -9751,8 +9868,11 @@ static enum ndr_err_code ndr_push_samr_QueryUserInfo2(struct ndr_push *ndr, int
                if (r->out.info == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_push_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
+               if (*r->out.info) {
+                       NDR_CHECK(ndr_push_set_switch_value(ndr, *r->out.info, r->in.level));
+                       NDR_CHECK(ndr_push_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
+               }
                NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -9760,8 +9880,10 @@ static enum ndr_err_code ndr_push_samr_QueryUserInfo2(struct ndr_push *ndr, int
 
 static enum ndr_err_code ndr_pull_samr_QueryUserInfo2(struct ndr_pull *ndr, int flags, struct samr_QueryUserInfo2 *r)
 {
+       uint32_t _ptr_info;
        TALLOC_CTX *_mem_save_user_handle_0;
        TALLOC_CTX *_mem_save_info_0;
+       TALLOC_CTX *_mem_save_info_1;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
 
@@ -9782,8 +9904,19 @@ static enum ndr_err_code ndr_pull_samr_QueryUserInfo2(struct ndr_pull *ndr, int
                }
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_pull_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
+               if (_ptr_info) {
+                       NDR_PULL_ALLOC(ndr, *r->out.info);
+               } else {
+                       *r->out.info = NULL;
+               }
+               if (*r->out.info) {
+                       _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
+                       NDR_CHECK(ndr_pull_set_switch_value(ndr, *r->out.info, r->in.level));
+                       NDR_CHECK(ndr_pull_samr_UserInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
        }
@@ -9812,8 +9945,13 @@ _PUBLIC_ void ndr_print_samr_QueryUserInfo2(struct ndr_print *ndr, const char *n
                ndr->depth++;
                ndr_print_ptr(ndr, "info", r->out.info);
                ndr->depth++;
-               ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
-               ndr_print_samr_UserInfo(ndr, "info", r->out.info);
+               ndr_print_ptr(ndr, "info", *r->out.info);
+               ndr->depth++;
+               if (*r->out.info) {
+                       ndr_print_set_switch_value(ndr, *r->out.info, r->in.level);
+                       ndr_print_samr_UserInfo(ndr, "info", *r->out.info);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_NTSTATUS(ndr, "result", r->out.result);
                ndr->depth--;
@@ -9957,7 +10095,10 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex2(struct ndr_pu
                }
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
-               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+               if (r->in.name == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
        }
        if (flags & NDR_OUT) {
                if (r->out.idx == NULL) {
@@ -9972,6 +10113,7 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex2(struct ndr_pu
 static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex2(struct ndr_pull *ndr, int flags, struct samr_GetDisplayEnumerationIndex2 *r)
 {
        TALLOC_CTX *_mem_save_domain_handle_0;
+       TALLOC_CTX *_mem_save_name_0;
        TALLOC_CTX *_mem_save_idx_0;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
@@ -9984,7 +10126,13 @@ static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex2(struct ndr_pu
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_handle_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
-               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.name);
+               }
+               _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_PULL_ALLOC(ndr, r->out.idx);
                ZERO_STRUCTP(r->out.idx);
        }
@@ -10016,7 +10164,10 @@ _PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex2(struct ndr_print *ndr,
                ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
                ndr->depth--;
                ndr_print_uint16(ndr, "level", r->in.level);
-               ndr_print_lsa_String(ndr, "name", &r->in.name);
+               ndr_print_ptr(ndr, "name", r->in.name);
+               ndr->depth++;
+               ndr_print_lsa_String(ndr, "name", r->in.name);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
@@ -11809,7 +11960,10 @@ static enum ndr_err_code ndr_push_samr_RidToSid(struct ndr_push *ndr, int flags,
                if (r->out.sid == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.sid));
+               if (*r->out.sid) {
+                       NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sid));
+               }
                NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -11817,8 +11971,10 @@ static enum ndr_err_code ndr_push_samr_RidToSid(struct ndr_push *ndr, int flags,
 
 static enum ndr_err_code ndr_pull_samr_RidToSid(struct ndr_pull *ndr, int flags, struct samr_RidToSid *r)
 {
+       uint32_t _ptr_sid;
        TALLOC_CTX *_mem_save_domain_handle_0;
        TALLOC_CTX *_mem_save_sid_0;
+       TALLOC_CTX *_mem_save_sid_1;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
 
@@ -11839,7 +11995,18 @@ static enum ndr_err_code ndr_pull_samr_RidToSid(struct ndr_pull *ndr, int flags,
                }
                _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.sid, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sid));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
+               if (_ptr_sid) {
+                       NDR_PULL_ALLOC(ndr, *r->out.sid);
+               } else {
+                       *r->out.sid = NULL;
+               }
+               if (*r->out.sid) {
+                       _mem_save_sid_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.sid, 0);
+                       NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.sid));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
        }
@@ -11868,7 +12035,12 @@ _PUBLIC_ void ndr_print_samr_RidToSid(struct ndr_print *ndr, const char *name, i
                ndr->depth++;
                ndr_print_ptr(ndr, "sid", r->out.sid);
                ndr->depth++;
-               ndr_print_dom_sid2(ndr, "sid", r->out.sid);
+               ndr_print_ptr(ndr, "sid", *r->out.sid);
+               ndr->depth++;
+               if (*r->out.sid) {
+                       ndr_print_dom_sid2(ndr, "sid", *r->out.sid);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_NTSTATUS(ndr, "result", r->out.result);
                ndr->depth--;
@@ -11972,15 +12144,21 @@ static enum ndr_err_code ndr_push_samr_ValidatePassword(struct ndr_push *ndr, in
 {
        if (flags & NDR_IN) {
                NDR_CHECK(ndr_push_samr_ValidatePasswordLevel(ndr, NDR_SCALARS, r->in.level));
-               NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.req, r->in.level));
-               NDR_CHECK(ndr_push_samr_ValidatePasswordReq(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
+               if (r->in.req == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
+               NDR_CHECK(ndr_push_samr_ValidatePasswordReq(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
        }
        if (flags & NDR_OUT) {
                if (r->out.rep == NULL) {
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
                }
-               NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.rep, r->in.level));
-               NDR_CHECK(ndr_push_samr_ValidatePasswordRep(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.rep));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.rep));
+               if (*r->out.rep) {
+                       NDR_CHECK(ndr_push_set_switch_value(ndr, *r->out.rep, r->in.level));
+                       NDR_CHECK(ndr_push_samr_ValidatePasswordRep(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.rep));
+               }
                NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -11988,13 +12166,22 @@ static enum ndr_err_code ndr_push_samr_ValidatePassword(struct ndr_push *ndr, in
 
 static enum ndr_err_code ndr_pull_samr_ValidatePassword(struct ndr_pull *ndr, int flags, struct samr_ValidatePassword *r)
 {
+       uint32_t _ptr_rep;
+       TALLOC_CTX *_mem_save_req_0;
        TALLOC_CTX *_mem_save_rep_0;
+       TALLOC_CTX *_mem_save_rep_1;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
 
                NDR_CHECK(ndr_pull_samr_ValidatePasswordLevel(ndr, NDR_SCALARS, &r->in.level));
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.req, r->in.level));
-               NDR_CHECK(ndr_pull_samr_ValidatePasswordReq(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.req);
+               }
+               _mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
+               NDR_CHECK(ndr_pull_samr_ValidatePasswordReq(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_PULL_ALLOC(ndr, r->out.rep);
                ZERO_STRUCTP(r->out.rep);
        }
@@ -12004,8 +12191,19 @@ static enum ndr_err_code ndr_pull_samr_ValidatePassword(struct ndr_pull *ndr, in
                }
                _mem_save_rep_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->out.rep, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.rep, r->in.level));
-               NDR_CHECK(ndr_pull_samr_ValidatePasswordRep(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.rep));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rep));
+               if (_ptr_rep) {
+                       NDR_PULL_ALLOC(ndr, *r->out.rep);
+               } else {
+                       *r->out.rep = NULL;
+               }
+               if (*r->out.rep) {
+                       _mem_save_rep_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, *r->out.rep, 0);
+                       NDR_CHECK(ndr_pull_set_switch_value(ndr, *r->out.rep, r->in.level));
+                       NDR_CHECK(ndr_pull_samr_ValidatePasswordRep(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.rep));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rep_1, 0);
+               }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rep_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
        }
@@ -12023,8 +12221,11 @@ _PUBLIC_ void ndr_print_samr_ValidatePassword(struct ndr_print *ndr, const char
                ndr_print_struct(ndr, "in", "samr_ValidatePassword");
                ndr->depth++;
                ndr_print_samr_ValidatePasswordLevel(ndr, "level", r->in.level);
-               ndr_print_set_switch_value(ndr, &r->in.req, r->in.level);
-               ndr_print_samr_ValidatePasswordReq(ndr, "req", &r->in.req);
+               ndr_print_ptr(ndr, "req", r->in.req);
+               ndr->depth++;
+               ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
+               ndr_print_samr_ValidatePasswordReq(ndr, "req", r->in.req);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
@@ -12032,8 +12233,13 @@ _PUBLIC_ void ndr_print_samr_ValidatePassword(struct ndr_print *ndr, const char
                ndr->depth++;
                ndr_print_ptr(ndr, "rep", r->out.rep);
                ndr->depth++;
-               ndr_print_set_switch_value(ndr, r->out.rep, r->in.level);
-               ndr_print_samr_ValidatePasswordRep(ndr, "rep", r->out.rep);
+               ndr_print_ptr(ndr, "rep", *r->out.rep);
+               ndr->depth++;
+               if (*r->out.rep) {
+                       ndr_print_set_switch_value(ndr, *r->out.rep, r->in.level);
+                       ndr_print_samr_ValidatePasswordRep(ndr, "rep", *r->out.rep);
+               }
+               ndr->depth--;
                ndr->depth--;
                ndr_print_NTSTATUS(ndr, "result", r->out.result);
                ndr->depth--;
@@ -12605,7 +12811,7 @@ static const char * const samr_authservice_strings[] = {
 };
 
 static const struct ndr_interface_string_array samr_authservices = {
-       .count  = 3,
+       .count  = 1,
        .names  = samr_authservice_strings
 };