From 61f95f1f9759383a8b1ffaf7da6100865144156f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 30 Apr 2007 00:48:20 +0000 Subject: r22585: Get us into a consistent state with TALLOC_ZERO_ARRAY also. Jeremy. (This used to be commit c622fb8536d955952a0fbf2441a4cb45a9feb9b0) --- source3/rpc_parse/parse_samr.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'source3/rpc_parse/parse_samr.c') diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c index 9beefbc0c0..49a1db75c0 100644 --- a/source3/rpc_parse/parse_samr.c +++ b/source3/rpc_parse/parse_samr.c @@ -4245,7 +4245,11 @@ void init_samr_q_lookup_rids(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_RIDS * q_u, q_u->flags = flags; q_u->ptr = 0; q_u->num_rids2 = num_rids; - q_u->rid = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids ); + if (num_rids) { + q_u->rid = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids ); + } else { + q_u->rid = NULL; + } if (q_u->rid == NULL) { q_u->num_rids1 = 0; q_u->num_rids2 = 0; @@ -4897,11 +4901,16 @@ NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u, q_u->ptr = 0; q_u->num_names2 = num_names; - if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names))) - return NT_STATUS_NO_MEMORY; + if (num_names) { + if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names))) + return NT_STATUS_NO_MEMORY; - if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names))) - return NT_STATUS_NO_MEMORY; + if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names))) + return NT_STATUS_NO_MEMORY; + } else { + q_u->hdr_name = NULL; + q_u->uni_name = NULL; + } for (i = 0; i < num_names; i++) { init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE); /* unicode string for machine account */ @@ -4986,10 +4995,15 @@ NTSTATUS init_samr_r_lookup_names(TALLOC_CTX *ctx, SAMR_R_LOOKUP_NAMES * r_u, r_u->ptr_rids = 1; r_u->num_rids2 = num_rids; - if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) - return NT_STATUS_NO_MEMORY; - if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) - return NT_STATUS_NO_MEMORY; + if (num_rids) { + if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) + return NT_STATUS_NO_MEMORY; + if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids))) + return NT_STATUS_NO_MEMORY; + } else { + r_u->rids = NULL; + r_u->types = NULL; + } if (!r_u->rids || !r_u->types) goto empty; -- cgit