summaryrefslogtreecommitdiffstats
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-09 16:00:23 +0100
committerGünther Deschner <gd@samba.org>2014-01-16 18:21:40 +0100
commitdc561b7e2d92988adbcc390116f08e6b5266cccc (patch)
treecb9a1ae99e1df26696eafa8b46d2a2c92e833b42 /source4
parent7a62a3557773133456d8c4521d9440cb1aaef273 (diff)
downloadsamba-dc561b7e2d92988adbcc390116f08e6b5266cccc.tar.gz
samba-dc561b7e2d92988adbcc390116f08e6b5266cccc.tar.xz
samba-dc561b7e2d92988adbcc390116f08e6b5266cccc.zip
dcerpc.idl: make use of union dcerpc_bind_ack_reason and fix all callers.
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org> Autobuild-User(master): Günther Deschner <gd@samba.org> Autobuild-Date(master): Thu Jan 16 18:21:40 CET 2014 on sn-devel-104
Diffstat (limited to 'source4')
-rw-r--r--source4/librpc/rpc/dcerpc.c14
-rw-r--r--source4/rpc_server/dcerpc_server.c4
2 files changed, 14 insertions, 4 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c
index 5a2fe16c2f..1efa85e704 100644
--- a/source4/librpc/rpc/dcerpc.c
+++ b/source4/librpc/rpc/dcerpc.c
@@ -1006,7 +1006,17 @@ static NTSTATUS dcerpc_map_ack_reason(const struct dcerpc_ack_ctx *ack)
return NT_STATUS_RPC_PROTOCOL_ERROR;
}
- switch (ack->reason) {
+ switch (ack->result) {
+ case DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK:
+ /*
+ * We have not asked for this...
+ */
+ return NT_STATUS_RPC_PROTOCOL_ERROR;
+ default:
+ break;
+ }
+
+ switch (ack->reason.value) {
case DCERPC_BIND_ACK_REASON_ABSTRACT_SYNTAX_NOT_SUPPORTED:
return NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX;
case DCERPC_BIND_ACK_REASON_TRANSFER_SYNTAXES_NOT_SUPPORTED:
@@ -2180,7 +2190,7 @@ static void dcerpc_alter_context_recv_handler(struct rpc_request *subreq,
pkt->u.alter_resp.ctx_list[0].result != 0) {
status = dcerpc_map_ack_reason(&pkt->u.alter_resp.ctx_list[0]);
DEBUG(2,("dcerpc: alter_resp failed - reason %d - %s\n",
- pkt->u.alter_resp.ctx_list[0].reason,
+ pkt->u.alter_resp.ctx_list[0].reason.value,
nt_errstr(status)));
tevent_req_nterror(req, status);
return;
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index d82ef9c80b..6ab355f2fd 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -640,7 +640,7 @@ static NTSTATUS dcesrv_bind(struct dcesrv_call_state *call)
return NT_STATUS_NO_MEMORY;
}
pkt.u.bind_ack.ctx_list[0].result = result;
- pkt.u.bind_ack.ctx_list[0].reason = reason;
+ pkt.u.bind_ack.ctx_list[0].reason.value = reason;
pkt.u.bind_ack.ctx_list[0].syntax = ndr_transfer_syntax_ndr;
pkt.u.bind_ack.auth_info = data_blob(NULL, 0);
@@ -829,7 +829,7 @@ static NTSTATUS dcesrv_alter(struct dcesrv_call_state *call)
return NT_STATUS_NO_MEMORY;
}
pkt.u.alter_resp.ctx_list[0].result = result;
- pkt.u.alter_resp.ctx_list[0].reason = reason;
+ pkt.u.alter_resp.ctx_list[0].reason.value = reason;
pkt.u.alter_resp.ctx_list[0].syntax = ndr_transfer_syntax_ndr;
pkt.u.alter_resp.auth_info = data_blob(NULL, 0);
pkt.u.alter_resp.secondary_address = "";