summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2016-08-30 15:52:41 +0200
committerAndreas Schneider <asn@cryptomilk.org>2016-10-26 11:20:16 +0200
commit36f90c8f134c2224645b46ed9cddc5668c76756e (patch)
tree8dbac5062c226117eeb4e5289055d93e0d905c9b /source4/librpc
parentb72d3f0ba567af629d38367b2af961d804f1586d (diff)
downloadsamba-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.c8
-rw-r--r--source4/librpc/rpc/dcerpc_auth.c2
-rw-r--r--source4/librpc/rpc/dcerpc_util.c2
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].