From: Andreas Schneider Date: Thu, 30 Jun 2011 09:52:59 +0000 (+0200) Subject: s3-librpc: Add dcerpc_binding_vector_new(). X-Git-Tag: talloc-2.0.6~192 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=08523ed6b8105aee97225bdf389bd029754aacb1;p=ddiss%2Fsamba.git s3-librpc: Add dcerpc_binding_vector_new(). --- diff --git a/source3/librpc/rpc/dcerpc_ep.c b/source3/librpc/rpc/dcerpc_ep.c index 14d475fbef4..cd8b656a7b7 100644 --- a/source3/librpc/rpc/dcerpc_ep.c +++ b/source3/librpc/rpc/dcerpc_ep.c @@ -1,7 +1,7 @@ /* * Endpoint Mapper Functions * DCERPC local endpoint mapper client routines - * Copyright (c) 2010 Andreas Schneider. + * Copyright (c) 2010-2011 Andreas Schneider. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +28,44 @@ #define EPM_MAX_ANNOTATION_SIZE 64 +NTSTATUS dcerpc_binding_vector_new(TALLOC_CTX *mem_ctx, + struct dcerpc_binding_vector **pbvec) +{ + struct dcerpc_binding_vector *bvec; + NTSTATUS status; + TALLOC_CTX *tmp_ctx; + + tmp_ctx = talloc_stackframe(); + if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + + bvec = talloc_zero(tmp_ctx, struct dcerpc_binding_vector); + if (bvec == NULL) { + status = NT_STATUS_NO_MEMORY; + goto done; + } + + bvec->bindings = talloc_zero_array(bvec, + struct dcerpc_binding, + 4); + if (bvec->bindings == NULL) { + status = NT_STATUS_NO_MEMORY; + goto done; + } + + bvec->allocated = 4; + bvec->count = 0; + + *pbvec = talloc_move(mem_ctx, &bvec); + + status = NT_STATUS_OK; +done: + talloc_free(tmp_ctx); + + return status; +} + NTSTATUS dcerpc_binding_vector_create(TALLOC_CTX *mem_ctx, const struct ndr_interface_table *iface, uint16_t port, diff --git a/source3/librpc/rpc/dcerpc_ep.h b/source3/librpc/rpc/dcerpc_ep.h index 226d402986e..61b85e23dc0 100644 --- a/source3/librpc/rpc/dcerpc_ep.h +++ b/source3/librpc/rpc/dcerpc_ep.h @@ -1,7 +1,7 @@ /* * Endpoint Mapper Functions * DCERPC local endpoint mapper client routines - * Copyright (c) 2010 Andreas Schneider. + * Copyright (c) 2010-2011 Andreas Schneider. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,8 +23,21 @@ struct dcerpc_binding_vector { struct dcerpc_binding *bindings; uint32_t count; + uint32_t allocated; }; +/** + * @brief Allocate a new binding vector. + * + * @param[in] mem_ctx The memory context to allocate the vector. + * + * @param[out] pbvec A pointer to store the binding vector. + * + * @return An NTSTATUS error code. + */ +NTSTATUS dcerpc_binding_vector_new(TALLOC_CTX *mem_ctx, + struct dcerpc_binding_vector **pbvec); + NTSTATUS dcerpc_binding_vector_create(TALLOC_CTX *mem_ctx, const struct ndr_interface_table *iface, uint16_t port,