diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-09 16:20:46 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-01-16 16:22:53 +0100 |
commit | 0648f6e66e36fdfed96828cf41af87b9d99ede41 (patch) | |
tree | 55e1a992e6d4dba1bb2210410a39df87661852e9 | |
parent | 572ea36c79ffaca1950fc27303d665a283b5be96 (diff) | |
download | samba-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.c | 19 |
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))); |