summaryrefslogtreecommitdiff
path: root/source3/rpc_client/ndr.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_client/ndr.c')
-rw-r--r--source3/rpc_client/ndr.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/source3/rpc_client/ndr.c b/source3/rpc_client/ndr.c
index c7044aa7d9..a64ead809a 100644
--- a/source3/rpc_client/ndr.c
+++ b/source3/rpc_client/ndr.c
@@ -33,6 +33,7 @@ NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli,
DATA_BLOB blob;
struct ndr_push *push;
NTSTATUS status;
+ enum ndr_err_code ndr_err;
SMB_ASSERT(cli->pipe_idx == p_idx);
SMB_ASSERT(table->num_calls > opnum);
@@ -44,9 +45,9 @@ NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli,
return NT_STATUS_NO_MEMORY;
}
- status = call->ndr_push(push, NDR_IN, r);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ ndr_err = call->ndr_push(push, NDR_IN, r);
+ if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+ return ndr_map_error2ntstatus(ndr_err);
}
blob = ndr_push_blob(push);
@@ -85,11 +86,11 @@ NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli,
/* have the ndr parser alloc memory for us */
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
- status = call->ndr_pull(pull, NDR_OUT, r);
+ ndr_err = call->ndr_pull(pull, NDR_OUT, r);
talloc_free(pull);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+ return ndr_map_error2ntstatus(ndr_err);
}
return NT_STATUS_OK;