diff options
author | Günther Deschner <gd@samba.org> | 2016-08-30 15:52:41 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2016-10-26 11:20:16 +0200 |
commit | 36f90c8f134c2224645b46ed9cddc5668c76756e (patch) | |
tree | 8dbac5062c226117eeb4e5289055d93e0d905c9b /source4/librpc | |
parent | b72d3f0ba567af629d38367b2af961d804f1586d (diff) | |
download | samba-36f90c8f134c2224645b46ed9cddc5668c76756e.tar.gz |
s4:librpc/rpc: add support for DCERPC_AUTH_LEVEL_PACKET
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Guenther Deschner <gd@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source4/librpc')
-rw-r--r-- | source4/librpc/rpc/dcerpc.c | 8 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc_auth.c | 2 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc_util.c | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index 37d41a42eda..8a96f01e8a0 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -1526,7 +1526,7 @@ static NTSTATUS dcerpc_request_prepare_vt(struct rpc_request *req) struct ndr_push *ndr = NULL; enum ndr_err_code ndr_err; - if (sec->auth_level < DCERPC_AUTH_LEVEL_INTEGRITY) { + if (sec->auth_level < DCERPC_AUTH_LEVEL_PACKET) { return NT_STATUS_OK; } @@ -1661,7 +1661,7 @@ static void dcerpc_ship_next_request(struct dcecli_connection *c) need_async = true; } - if (c->security_state.auth_level >= DCERPC_AUTH_LEVEL_INTEGRITY) { + if (c->security_state.auth_level >= DCERPC_AUTH_LEVEL_PACKET) { can_async = gensec_have_feature(c->security_state.generic_state, GENSEC_FEATURE_ASYNC_REPLIES); } @@ -1683,7 +1683,7 @@ static void dcerpc_ship_next_request(struct dcecli_connection *c) request header size */ chunk_size = p->conn->srv_max_recv_frag; chunk_size -= DCERPC_REQUEST_LENGTH; - if (c->security_state.auth_level >= DCERPC_AUTH_LEVEL_INTEGRITY) { + if (c->security_state.auth_level >= DCERPC_AUTH_LEVEL_PACKET) { size_t max_payload = chunk_size; max_payload -= DCERPC_AUTH_TRAILER_LENGTH; @@ -2048,6 +2048,8 @@ uint32_t dcerpc_auth_level(struct dcecli_connection *c) auth_level = DCERPC_AUTH_LEVEL_INTEGRITY; } else if (c->flags & DCERPC_CONNECT) { auth_level = DCERPC_AUTH_LEVEL_CONNECT; + } else if (c->flags & DCERPC_PACKET) { + auth_level = DCERPC_AUTH_LEVEL_PACKET; } else { auth_level = DCERPC_AUTH_LEVEL_NONE; } diff --git a/source4/librpc/rpc/dcerpc_auth.c b/source4/librpc/rpc/dcerpc_auth.c index d617b07e07c..c902d6e5259 100644 --- a/source4/librpc/rpc/dcerpc_auth.c +++ b/source4/librpc/rpc/dcerpc_auth.c @@ -432,7 +432,7 @@ struct composite_context *dcerpc_bind_auth_send(TALLOC_CTX *mem_ctx, } if (gensec_have_feature(sec->generic_state, GENSEC_FEATURE_SIGN_PKT_HEADER)) { - if (sec->auth_level >= DCERPC_AUTH_LEVEL_INTEGRITY) { + if (sec->auth_level >= DCERPC_AUTH_LEVEL_PACKET) { state->pipe->conn->flags |= DCERPC_PROPOSE_HEADER_SIGNING; } } diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c index e2e4a641e1f..32c753f0d8f 100644 --- a/source4/librpc/rpc/dcerpc_util.c +++ b/source4/librpc/rpc/dcerpc_util.c @@ -678,7 +678,7 @@ struct composite_context *dcerpc_pipe_auth_send(struct dcerpc_pipe *p, /* Perform an authenticated DCE-RPC bind */ - if (!(conn->flags & (DCERPC_CONNECT|DCERPC_SEAL))) { + if (!(conn->flags & (DCERPC_CONNECT|DCERPC_SEAL|DCERPC_PACKET))) { /* we are doing an authenticated connection, which needs to use [connect], [sign] or [seal]. |