summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-09 16:20:46 +0100
committerGünther Deschner <gd@samba.org>2014-01-16 16:22:53 +0100
commit0648f6e66e36fdfed96828cf41af87b9d99ede41 (patch)
tree55e1a992e6d4dba1bb2210410a39df87661852e9
parent572ea36c79ffaca1950fc27303d665a283b5be96 (diff)
downloadsamba-0648f6e66e36fdfed96828cf41af87b9d99ede41.tar.gz
samba-0648f6e66e36fdfed96828cf41af87b9d99ede41.tar.xz
samba-0648f6e66e36fdfed96828cf41af87b9d99ede41.zip
s4:librpc/rpc: add dcerpc_map_ack_reason()
This is not the value as dcerpc_bind_ack_reason values are not the same as dcerpc_bind_nak_reason values. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
-rw-r--r--source4/librpc/rpc/dcerpc.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c
index 23b3c37716..9d0fa3b693 100644
--- a/source4/librpc/rpc/dcerpc.c
+++ b/source4/librpc/rpc/dcerpc.c
@@ -998,6 +998,23 @@ static NTSTATUS dcerpc_map_reason(uint16_t reason)
return NT_STATUS_UNSUCCESSFUL;
}
+static NTSTATUS dcerpc_map_ack_reason(const struct dcerpc_ack_ctx *ack)
+{
+ if (ack == NULL) {
+ return NT_STATUS_RPC_PROTOCOL_ERROR;
+ }
+
+ switch (ack->reason) {
+ 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:
+ return NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX;
+ default:
+ break;
+ }
+ return NT_STATUS_UNSUCCESSFUL;
+}
+
/*
remove requests from the pending or queued queues
*/
@@ -2159,7 +2176,7 @@ static void dcerpc_alter_context_recv_handler(struct rpc_request *subreq,
if (pkt->ptype == DCERPC_PKT_ALTER_RESP &&
pkt->u.alter_resp.num_results == 1 &&
pkt->u.alter_resp.ctx_list[0].result != 0) {
- status = dcerpc_map_reason(pkt->u.alter_resp.ctx_list[0].reason);
+ 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,
nt_errstr(status)));