From 2c5ed102b7dfa9a53ece24d048f71fd5e3d59ae7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Apr 2014 13:02:35 +0200 Subject: [PATCH] s3:rpc_server: let auth_generic_server_step() handle gensec_security == NULL This simplifies the caller, we don't need to look at the auth_type anymore. Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider --- source3/rpc_server/dcesrv_auth_generic.c | 4 ++ source3/rpc_server/srv_pipe.c | 47 ++++++------------------ 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/source3/rpc_server/dcesrv_auth_generic.c b/source3/rpc_server/dcesrv_auth_generic.c index 116512172d9..b6e45684e7f 100644 --- a/source3/rpc_server/dcesrv_auth_generic.c +++ b/source3/rpc_server/dcesrv_auth_generic.c @@ -90,6 +90,10 @@ NTSTATUS auth_generic_server_step(struct gensec_security *gensec_security, { NTSTATUS status; + if (gensec_security == NULL) { + return NT_STATUS_INTERNAL_ERROR; + } + /* this has to be done as root in order to verify the password */ become_root(); status = gensec_update(gensec_security, mem_ctx, *token_in, token_out); diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index 23d84311649..cdbe5faf573 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -929,21 +929,12 @@ bool api_pipe_bind_auth3(struct pipes_struct *p, struct ncacn_packet *pkt) goto err; } - switch (auth_info.auth_type) { - case DCERPC_AUTH_TYPE_NTLMSSP: - case DCERPC_AUTH_TYPE_KRB5: - case DCERPC_AUTH_TYPE_SPNEGO: - gensec_security = talloc_get_type_abort(p->auth.auth_ctx, - struct gensec_security); - status = auth_generic_server_step(gensec_security, - pkt, &auth_info.credentials, - &response); - break; - default: - DEBUG(1, (__location__ ": incorrect auth type (%u).\n", - (unsigned int)auth_info.auth_type)); - return false; - } + gensec_security = talloc_get_type(p->auth.auth_ctx, + struct gensec_security); + + status = auth_generic_server_step(gensec_security, + pkt, &auth_info.credentials, + &response); if (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED) || @@ -1065,26 +1056,12 @@ static bool api_pipe_alter_context(struct pipes_struct *p, goto err_exit; } - - switch (auth_info.auth_type) { - case DCERPC_AUTH_TYPE_SPNEGO: - case DCERPC_AUTH_TYPE_KRB5: - case DCERPC_AUTH_TYPE_NTLMSSP: - gensec_security = talloc_get_type_abort(p->auth.auth_ctx, - struct gensec_security); - status = auth_generic_server_step(gensec_security, - pkt, - &auth_info.credentials, - &auth_resp); - break; - - default: - DEBUG(3, (__location__ ": Usupported auth type (%d) " - "in alter-context call\n", - auth_info.auth_type)); - goto err_exit; - } - + gensec_security = talloc_get_type(p->auth.auth_ctx, + struct gensec_security); + status = auth_generic_server_step(gensec_security, + pkt, + &auth_info.credentials, + &auth_resp); if (NT_STATUS_IS_OK(status)) { /* third leg of auth, verify auth info */ status = pipe_auth_verify_final(p); -- 2.34.1