summaryrefslogtreecommitdiffstats
path: root/librpc
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-03-27 21:17:53 +0200
committerVolker Lendecke <vl@samba.org>2011-03-27 23:18:52 +0200
commit6291a5040c3948ddd7d4ef276c680e907620bfbe (patch)
tree8bf9bf7a1852c89f7743234a4debd8d81d94bb90 /librpc
parent776331d73b01074f38f6b2e74969eb90aa00f219 (diff)
downloadsamba-6291a5040c3948ddd7d4ef276c680e907620bfbe.tar.gz
samba-6291a5040c3948ddd7d4ef276c680e907620bfbe.tar.xz
samba-6291a5040c3948ddd7d4ef276c680e907620bfbe.zip
librpc: Fix Coverity ID 2198: NULL_RETURNS
(cherry picked from commit 9370c28425500c0ad8cff27886c49ce256a1e59e)
Diffstat (limited to 'librpc')
-rw-r--r--librpc/rpc/binding.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index 422537e1f4e..af47fcea3ca 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -437,11 +437,17 @@ static DATA_BLOB dcerpc_floor_pack_lhs_data(TALLOC_CTX *mem_ctx, const struct nd
return blob;
}
-static DATA_BLOB dcerpc_floor_pack_rhs_if_version_data(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax)
+static bool dcerpc_floor_pack_rhs_if_version_data(
+ TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax,
+ DATA_BLOB *pblob)
{
DATA_BLOB blob;
struct ndr_push *ndr = ndr_push_init_ctx(mem_ctx);
+ if (ndr == NULL) {
+ return false;
+ }
+
ndr->flags |= LIBNDR_FLAG_NOALIGN;
ndr_push_uint16(ndr, NDR_SCALARS, syntax->if_version >> 16);
@@ -449,7 +455,8 @@ static DATA_BLOB dcerpc_floor_pack_rhs_if_version_data(TALLOC_CTX *mem_ctx, cons
blob = ndr_push_blob(ndr);
talloc_steal(mem_ctx, blob.data);
talloc_free(ndr);
- return blob;
+ *pblob = blob;
+ return true;
}
const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor)
@@ -817,7 +824,11 @@ _PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx,
tower->floors[0].lhs.lhs_data = dcerpc_floor_pack_lhs_data(tower->floors, &binding->object);
- tower->floors[0].rhs.uuid.unknown = dcerpc_floor_pack_rhs_if_version_data(tower->floors, &binding->object);
+ if (!dcerpc_floor_pack_rhs_if_version_data(
+ tower->floors, &binding->object,
+ &tower->floors[0].rhs.uuid.unknown)) {
+ return NT_STATUS_NO_MEMORY;
+ }
/* Floor 1 */
tower->floors[1].lhs.protocol = EPM_PROTOCOL_UUID;