From 3bdaae88f31fae2cc7d1857ffe4d7dd2d8c413ce Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 2 May 2013 16:29:21 +1200 Subject: [PATCH] s3-rpc_server: Ensure we are root when starting gensec This fixes bug 9465. Andrew Bartlett --- source3/rpc_server/dcesrv_auth_generic.c | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/source3/rpc_server/dcesrv_auth_generic.c b/source3/rpc_server/dcesrv_auth_generic.c index c4c08b2..f82659c 100644 --- a/source3/rpc_server/dcesrv_auth_generic.c +++ b/source3/rpc_server/dcesrv_auth_generic.c @@ -24,12 +24,12 @@ #include "auth.h" #include "auth/gensec/gensec.h" -NTSTATUS auth_generic_server_authtype_start(TALLOC_CTX *mem_ctx, - uint8_t auth_type, uint8_t auth_level, - DATA_BLOB *token_in, - DATA_BLOB *token_out, - const struct tsocket_address *remote_address, - struct gensec_security **ctx) +static NTSTATUS auth_generic_server_authtype_start_as_root(TALLOC_CTX *mem_ctx, + uint8_t auth_type, uint8_t auth_level, + DATA_BLOB *token_in, + DATA_BLOB *token_out, + const struct tsocket_address *remote_address, + struct gensec_security **ctx) { struct gensec_security *gensec_security = NULL; NTSTATUS status; @@ -62,6 +62,27 @@ NTSTATUS auth_generic_server_authtype_start(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } +NTSTATUS auth_generic_server_authtype_start(TALLOC_CTX *mem_ctx, + uint8_t auth_type, uint8_t auth_level, + DATA_BLOB *token_in, + DATA_BLOB *token_out, + const struct tsocket_address *remote_address, + struct gensec_security **ctx) +{ + NTSTATUS status; + become_root(); + + /* this has to be done as root in order to create the messaging socket */ + status = auth_generic_server_authtype_start_as_root(mem_ctx, + auth_type, auth_level, + token_in, + token_out, + remote_address, + ctx); + unbecome_root(); + return status; +} + NTSTATUS auth_generic_server_step(struct gensec_security *gensec_security, TALLOC_CTX *mem_ctx, DATA_BLOB *token_in, -- 1.7.11.7