[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2349-g66e6f97

Günther Deschner gd at samba.org
Sun Feb 17 19:12:19 GMT 2008


The branch, v3-2-test has been updated
       via  66e6f97e8bb3ba18055ecd33a5ddb8aab7080236 (commit)
       via  8d79684d6cebdf1995c37255b42594522071a910 (commit)
       via  4fe468786bedfb8bc03d5db1396a70379111f188 (commit)
       via  6e21a5c3bb6e88ee9c9743094822fb7161f09952 (commit)
       via  088a9f21b2a37acdf9a43128252db23d3222ec7c (commit)
       via  4d5d2fc8d537c5aaa4d1196cc145cb223e4ced4d (commit)
       via  10f2cddfd529fcd538a09cc92eb3f99619742c44 (commit)
       via  684de849c8f3847b1ba389f4e15225c9ca5924f9 (commit)
      from  c396f45e7ddc8d6ce0efa0cda2996ca513ecbdb7 (commit)

http://gitweb.samba.org/?samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 66e6f97e8bb3ba18055ecd33a5ddb8aab7080236
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 20:10:54 2008 +0100

    Re-run make idl.
    
    Guenther

commit 8d79684d6cebdf1995c37255b42594522071a910
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 20:04:40 2008 +0100

    Fix IDL for lsa_LookupNames4.
    
    Guenther

commit 4fe468786bedfb8bc03d5db1396a70379111f188
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 20:04:14 2008 +0100

    Fix IDL for lsa_LookupSids3.
    
    Guenther

commit 6e21a5c3bb6e88ee9c9743094822fb7161f09952
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 20:03:53 2008 +0100

    Fix IDL for lsa_LookupNames3.
    
    Guenther

commit 088a9f21b2a37acdf9a43128252db23d3222ec7c
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 20:03:12 2008 +0100

    Fix IDL for lsa_LookupNames2.
    
    Guenther

commit 4d5d2fc8d537c5aaa4d1196cc145cb223e4ced4d
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 19:58:48 2008 +0100

    Fix IDL for lsa_LookupSids2.
    
    Guenther

commit 10f2cddfd529fcd538a09cc92eb3f99619742c44
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 19:58:18 2008 +0100

    Fix IDL for lsa_LookupSids.
    
    Guenther

commit 684de849c8f3847b1ba389f4e15225c9ca5924f9
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 17 19:55:35 2008 +0100

    Fix IDL for lsa_LookupNames.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/librpc/gen_ndr/cli_lsa.c |   38 ++----
 source/librpc/gen_ndr/cli_lsa.h |   10 +-
 source/librpc/gen_ndr/lsa.h     |   14 +-
 source/librpc/gen_ndr/ndr_lsa.c |  251 ++++++++++++++++++++++++---------------
 source/librpc/gen_ndr/srv_lsa.c |   10 +-
 source/librpc/idl/lsa.idl       |   48 ++++----
 6 files changed, 210 insertions(+), 161 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/librpc/gen_ndr/cli_lsa.c b/source/librpc/gen_ndr/cli_lsa.c
index 7484edc..7f78462 100644
--- a/source/librpc/gen_ndr/cli_lsa.c
+++ b/source/librpc/gen_ndr/cli_lsa.c
@@ -609,7 +609,7 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli,
 				struct policy_handle *handle,
 				uint32_t num_names,
 				struct lsa_String *names,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransSidArray *sids,
 				enum lsa_LookupNamesLevel level,
 				uint32_t *count)
@@ -649,9 +649,7 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*sids = *r.out.sids;
 	*count = *r.out.count;
 
@@ -663,7 +661,7 @@ NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli,
 			       TALLOC_CTX *mem_ctx,
 			       struct policy_handle *handle,
 			       struct lsa_SidArray *sids,
-			       struct lsa_RefDomainList *domains,
+			       struct lsa_RefDomainList **domains,
 			       struct lsa_TransNameArray *names,
 			       uint16_t level,
 			       uint32_t *count)
@@ -702,9 +700,7 @@ NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*names = *r.out.names;
 	*count = *r.out.count;
 
@@ -2472,7 +2468,7 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli,
 				TALLOC_CTX *mem_ctx,
 				struct policy_handle *handle,
 				struct lsa_SidArray *sids,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransNameArray2 *names,
 				uint16_t level,
 				uint32_t *count,
@@ -2515,9 +2511,7 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*names = *r.out.names;
 	*count = *r.out.count;
 
@@ -2530,7 +2524,7 @@ NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli,
 				 struct policy_handle *handle,
 				 uint32_t num_names,
 				 struct lsa_String *names,
-				 struct lsa_RefDomainList *domains,
+				 struct lsa_RefDomainList **domains,
 				 struct lsa_TransSidArray2 *sids,
 				 enum lsa_LookupNamesLevel level,
 				 uint32_t *count,
@@ -2574,9 +2568,7 @@ NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*sids = *r.out.sids;
 	*count = *r.out.count;
 
@@ -2966,9 +2958,7 @@ NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*sids = *r.out.sids;
 	*count = *r.out.count;
 
@@ -3246,7 +3236,7 @@ NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli,
 				TALLOC_CTX *mem_ctx,
 				struct lsa_SidArray *sids,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransNameArray2 *names,
 				uint16_t level,
 				uint32_t *count,
@@ -3288,9 +3278,7 @@ NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*names = *r.out.names;
 	*count = *r.out.count;
 
@@ -3345,9 +3333,7 @@ NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (domains && r.out.domains) {
-		*domains = *r.out.domains;
-	}
+	*domains = *r.out.domains;
 	*sids = *r.out.sids;
 	*count = *r.out.count;
 
diff --git a/source/librpc/gen_ndr/cli_lsa.h b/source/librpc/gen_ndr/cli_lsa.h
index e4bf43a..8513a9d 100644
--- a/source/librpc/gen_ndr/cli_lsa.h
+++ b/source/librpc/gen_ndr/cli_lsa.h
@@ -72,7 +72,7 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli,
 				struct policy_handle *handle,
 				uint32_t num_names,
 				struct lsa_String *names,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransSidArray *sids,
 				enum lsa_LookupNamesLevel level,
 				uint32_t *count);
@@ -80,7 +80,7 @@ NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli,
 			       TALLOC_CTX *mem_ctx,
 			       struct policy_handle *handle,
 			       struct lsa_SidArray *sids,
-			       struct lsa_RefDomainList *domains,
+			       struct lsa_RefDomainList **domains,
 			       struct lsa_TransNameArray *names,
 			       uint16_t level,
 			       uint32_t *count);
@@ -276,7 +276,7 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli,
 				TALLOC_CTX *mem_ctx,
 				struct policy_handle *handle,
 				struct lsa_SidArray *sids,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransNameArray2 *names,
 				uint16_t level,
 				uint32_t *count,
@@ -287,7 +287,7 @@ NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli,
 				 struct policy_handle *handle,
 				 uint32_t num_names,
 				 struct lsa_String *names,
-				 struct lsa_RefDomainList *domains,
+				 struct lsa_RefDomainList **domains,
 				 struct lsa_TransSidArray2 *sids,
 				 enum lsa_LookupNamesLevel level,
 				 uint32_t *count,
@@ -343,7 +343,7 @@ NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli,
 				TALLOC_CTX *mem_ctx,
 				struct lsa_SidArray *sids,
-				struct lsa_RefDomainList *domains,
+				struct lsa_RefDomainList **domains,
 				struct lsa_TransNameArray2 *names,
 				uint16_t level,
 				uint32_t *count,
diff --git a/source/librpc/gen_ndr/lsa.h b/source/librpc/gen_ndr/lsa.h
index 4a1ebdb..62f8f2c 100644
--- a/source/librpc/gen_ndr/lsa.h
+++ b/source/librpc/gen_ndr/lsa.h
@@ -774,7 +774,7 @@ struct lsa_LookupNames {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList **domains;/* [ref] */
 		struct lsa_TransSidArray *sids;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -793,7 +793,7 @@ struct lsa_LookupSids {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList **domains;/* [ref] */
 		struct lsa_TransNameArray *names;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -1356,7 +1356,7 @@ struct lsa_LookupSids2 {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList **domains;/* [ref] */
 		struct lsa_TransNameArray2 *names;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -1378,7 +1378,7 @@ struct lsa_LookupNames2 {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList **domains;/* [ref] */
 		struct lsa_TransSidArray2 *sids;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -1472,7 +1472,7 @@ struct lsa_LookupNames3 {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList *domains;/* [ref] */
 		struct lsa_TransSidArray3 *sids;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -1555,7 +1555,7 @@ struct lsa_LookupSids3 {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList **domains;/* [ref] */
 		struct lsa_TransNameArray2 *names;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
@@ -1576,7 +1576,7 @@ struct lsa_LookupNames4 {
 	} in;
 
 	struct {
-		struct lsa_RefDomainList *domains;/* [unique] */
+		struct lsa_RefDomainList *domains;/* [ref] */
 		struct lsa_TransSidArray3 *sids;/* [ref] */
 		uint32_t *count;/* [ref] */
 		NTSTATUS result;
diff --git a/source/librpc/gen_ndr/ndr_lsa.c b/source/librpc/gen_ndr/ndr_lsa.c
index 74d8a31..d5cbc0e 100644
--- a/source/librpc/gen_ndr/ndr_lsa.c
+++ b/source/librpc/gen_ndr/ndr_lsa.c
@@ -5704,9 +5704,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupNames(struct ndr_push *ndr, int fl
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
-		if (r->out.domains) {
-			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
+		if (r->out.domains == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.domains));
+		if (*r->out.domains) {
+			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
 		}
 		if (r->out.sids == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -5728,6 +5731,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int fl
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_names_0;
 	TALLOC_CTX *_mem_save_domains_0;
+	TALLOC_CTX *_mem_save_domains_1;
 	TALLOC_CTX *_mem_save_sids_0;
 	TALLOC_CTX *_mem_save_count_0;
 	if (flags & NDR_IN) {
@@ -5770,6 +5774,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int fl
 		NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
+		NDR_PULL_ALLOC(ndr, r->out.domains);
+		ZERO_STRUCTP(r->out.domains);
 		NDR_PULL_ALLOC(ndr, r->out.sids);
 		*r->out.sids = *r->in.sids;
 		NDR_PULL_ALLOC(ndr, r->out.count);
@@ -5779,18 +5785,24 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int fl
 		}
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.domains);
+		}
+		_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
 		if (_ptr_domains) {
-			NDR_PULL_ALLOC(ndr, r->out.domains);
+			NDR_PULL_ALLOC(ndr, *r->out.domains);
 		} else {
-			r->out.domains = NULL;
+			*r->out.domains = NULL;
 		}
-		if (r->out.domains) {
-			_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
-			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
+		if (*r->out.domains) {
+			_mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, *r->out.domains, 0);
+			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
 		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.sids);
 		}
@@ -5853,10 +5865,13 @@ _PUBLIC_ void ndr_print_lsa_LookupNames(struct ndr_print *ndr, const char *name,
 		ndr->depth++;
 		ndr_print_ptr(ndr, "domains", r->out.domains);
 		ndr->depth++;
-		if (r->out.domains) {
-			ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
+		ndr_print_ptr(ndr, "domains", *r->out.domains);
+		ndr->depth++;
+		if (*r->out.domains) {
+			ndr_print_lsa_RefDomainList(ndr, "domains", *r->out.domains);
 		}
 		ndr->depth--;
+		ndr->depth--;
 		ndr_print_ptr(ndr, "sids", r->out.sids);
 		ndr->depth++;
 		ndr_print_lsa_TransSidArray(ndr, "sids", r->out.sids);
@@ -5893,9 +5908,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupSids(struct ndr_push *ndr, int fla
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.count));
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
-		if (r->out.domains) {
-			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
+		if (r->out.domains == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.domains));
+		if (*r->out.domains) {
+			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
 		}
 		if (r->out.names == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -5916,6 +5934,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, int fla
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_sids_0;
 	TALLOC_CTX *_mem_save_domains_0;
+	TALLOC_CTX *_mem_save_domains_1;
 	TALLOC_CTX *_mem_save_names_0;
 	TALLOC_CTX *_mem_save_count_0;
 	if (flags & NDR_IN) {
@@ -5950,24 +5969,32 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, int fla
 		NDR_PULL_SET_MEM_CTX(ndr, r->in.count, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.count));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
+		NDR_PULL_ALLOC(ndr, r->out.domains);
+		ZERO_STRUCTP(r->out.domains);
 		NDR_PULL_ALLOC(ndr, r->out.names);
 		*r->out.names = *r->in.names;
 		NDR_PULL_ALLOC(ndr, r->out.count);
 		*r->out.count = *r->in.count;
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.domains);
+		}
+		_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
 		if (_ptr_domains) {
-			NDR_PULL_ALLOC(ndr, r->out.domains);
+			NDR_PULL_ALLOC(ndr, *r->out.domains);
 		} else {
-			r->out.domains = NULL;
+			*r->out.domains = NULL;
 		}
-		if (r->out.domains) {
-			_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
-			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
+		if (*r->out.domains) {
+			_mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, *r->out.domains, 0);
+			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
 		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.names);
 		}
@@ -6021,10 +6048,13 @@ _PUBLIC_ void ndr_print_lsa_LookupSids(struct ndr_print *ndr, const char *name,
 		ndr->depth++;
 		ndr_print_ptr(ndr, "domains", r->out.domains);
 		ndr->depth++;
-		if (r->out.domains) {
-			ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
+		ndr_print_ptr(ndr, "domains", *r->out.domains);
+		ndr->depth++;
+		if (*r->out.domains) {
+			ndr_print_lsa_RefDomainList(ndr, "domains", *r->out.domains);
 		}
 		ndr->depth--;
+		ndr->depth--;
 		ndr_print_ptr(ndr, "names", r->out.names);
 		ndr->depth++;
 		ndr_print_lsa_TransNameArray(ndr, "names", r->out.names);
@@ -9704,9 +9734,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupSids2(struct ndr_push *ndr, int fl
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
-		if (r->out.domains) {
-			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
+		if (r->out.domains == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.domains));
+		if (*r->out.domains) {
+			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
 		}
 		if (r->out.names == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -9727,6 +9760,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids2(struct ndr_pull *ndr, int fl
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_sids_0;
 	TALLOC_CTX *_mem_save_domains_0;
+	TALLOC_CTX *_mem_save_domains_1;
 	TALLOC_CTX *_mem_save_names_0;
 	TALLOC_CTX *_mem_save_count_0;
 	if (flags & NDR_IN) {
@@ -9763,24 +9797,32 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids2(struct ndr_pull *ndr, int fl
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown1));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
+		NDR_PULL_ALLOC(ndr, r->out.domains);
+		ZERO_STRUCTP(r->out.domains);
 		NDR_PULL_ALLOC(ndr, r->out.names);
 		*r->out.names = *r->in.names;
 		NDR_PULL_ALLOC(ndr, r->out.count);
 		*r->out.count = *r->in.count;
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.domains);
+		}
+		_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domains));
 		if (_ptr_domains) {
-			NDR_PULL_ALLOC(ndr, r->out.domains);
+			NDR_PULL_ALLOC(ndr, *r->out.domains);
 		} else {
-			r->out.domains = NULL;
+			*r->out.domains = NULL;
 		}
-		if (r->out.domains) {
-			_mem_save_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.domains, 0);
-			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, 0);
+		if (*r->out.domains) {
+			_mem_save_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, *r->out.domains, 0);
+			NDR_CHECK(ndr_pull_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_1, 0);
 		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domains_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.names);
 		}
@@ -9836,10 +9878,13 @@ _PUBLIC_ void ndr_print_lsa_LookupSids2(struct ndr_print *ndr, const char *name,
 		ndr->depth++;
 		ndr_print_ptr(ndr, "domains", r->out.domains);
 		ndr->depth++;
-		if (r->out.domains) {
-			ndr_print_lsa_RefDomainList(ndr, "domains", r->out.domains);
+		ndr_print_ptr(ndr, "domains", *r->out.domains);
+		ndr->depth++;
+		if (*r->out.domains) {
+			ndr_print_lsa_RefDomainList(ndr, "domains", *r->out.domains);
 		}
 		ndr->depth--;
+		ndr->depth--;
 		ndr_print_ptr(ndr, "names", r->out.names);
 		ndr->depth++;
 		ndr_print_lsa_TransNameArray2(ndr, "names", r->out.names);
@@ -9883,9 +9928,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupNames2(struct ndr_push *ndr, int f
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.domains));
-		if (r->out.domains) {
-			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.domains));
+		if (r->out.domains == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.domains));
+		if (*r->out.domains) {
+			NDR_CHECK(ndr_push_lsa_RefDomainList(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.domains));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list