summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcesrv_auth.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/rpc_server/dcesrv_auth.c')
-rw-r--r--source4/rpc_server/dcesrv_auth.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source4/rpc_server/dcesrv_auth.c b/source4/rpc_server/dcesrv_auth.c
index 71332b557d..91b579b9e4 100644
--- a/source4/rpc_server/dcesrv_auth.c
+++ b/source4/rpc_server/dcesrv_auth.c
@@ -204,9 +204,13 @@ BOOL dcesrv_auth_alter(struct dcesrv_call_state *call)
struct dcesrv_connection *dce_conn = call->conn;
NTSTATUS status;
- /* We can't work without an existing gensec state, and an new blob to feed it */
- if (!dce_conn->auth_state.gensec_security ||
- pkt->u.alter.auth_info.length == 0) {
+ /* on a pure interface change there is no auth blob */
+ if (pkt->u.alter.auth_info.length == 0) {
+ return True;
+ }
+
+ /* We can't work without an existing gensec state */
+ if (!dce_conn->auth_state.gensec_security) {
return False;
}
@@ -235,6 +239,11 @@ BOOL dcesrv_auth_alter_ack(struct dcesrv_call_state *call, struct dcerpc_packet
struct dcesrv_connection *dce_conn = call->conn;
NTSTATUS status;
+ /* on a pure interface change there is no auth blob */
+ if (pkt->u.alter.auth_info.length == 0) {
+ return True;
+ }
+
if (!call->conn->auth_state.gensec_security) {
return False;
}