From 719f4657e8c987cd29e8824dd3938f5609da9d61 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 22 Mar 2007 18:36:09 +0000 Subject: r21935: Revert obviously not sufficiently tested code -- sorry for the pain. I am afraid I was basically off the net for the day (This used to be commit 08c29abc03267b0dfb41cec3734653a536027a10) --- source3/auth/auth_winbind.c | 3 +-- source3/nsswitch/wb_common.c | 47 ++++++------------------------------- source3/nsswitch/winbind_client.h | 7 ++---- source3/nsswitch/winbind_nss_irix.c | 2 +- 4 files changed, 11 insertions(+), 48 deletions(-) (limited to 'source3') diff --git a/source3/auth/auth_winbind.c b/source3/auth/auth_winbind.c index f06f83f406..fa56757950 100644 --- a/source3/auth/auth_winbind.c +++ b/source3/auth/auth_winbind.c @@ -108,8 +108,7 @@ static NTSTATUS check_winbind_security(const struct auth_context *auth_context, /* we are contacting the privileged pipe */ become_root(); - result = winbindd_priv_request_response(WINBINDD_PAM_AUTH_CRAP, - &request, &response); + result = winbindd_request_response(WINBINDD_PAM_AUTH_CRAP, &request, &response); unbecome_root(); if ( result == NSS_STATUS_UNAVAIL ) { diff --git a/source3/nsswitch/wb_common.c b/source3/nsswitch/wb_common.c index fb84373aa6..05d2a660e7 100644 --- a/source3/nsswitch/wb_common.c +++ b/source3/nsswitch/wb_common.c @@ -33,7 +33,6 @@ BOOL winbind_on( void ); /* Global variables. These are effectively the client state information */ int winbindd_fd = -1; /* fd for winbindd socket */ -static int is_privileged = 0; /* Free a response structure */ @@ -288,7 +287,7 @@ static int winbind_named_pipe_sock(const char *dir) /* Connect to winbindd socket */ -static int winbind_open_pipe_sock(int recursing, int need_priv) +static int winbind_open_pipe_sock(int recursing) { #ifdef HAVE_UNIXSOCKET static pid_t our_pid; @@ -301,10 +300,6 @@ static int winbind_open_pipe_sock(int recursing, int need_priv) close_sock(); our_pid = getpid(); } - - if ((need_priv != 0) && (is_privileged == 0)) { - close_sock(); - } if (winbindd_fd != -1) { return winbindd_fd; @@ -318,8 +313,6 @@ static int winbind_open_pipe_sock(int recursing, int need_priv) return -1; } - is_privileged = 0; - /* version-check the socket */ request.flags = WBFLAG_RECURSE; @@ -336,14 +329,9 @@ static int winbind_open_pipe_sock(int recursing, int need_priv) if ((fd = winbind_named_pipe_sock((char *)response.extra_data.data)) != -1) { close(winbindd_fd); winbindd_fd = fd; - is_privileged = 1; } } - if ((need_priv != 0) && (is_privileged == 0)) { - return -1; - } - SAFE_FREE(response.extra_data.data); return winbindd_fd; @@ -354,7 +342,7 @@ static int winbind_open_pipe_sock(int recursing, int need_priv) /* Write data to winbindd socket */ -int write_sock(void *buffer, int count, int recursing, int need_priv) +int write_sock(void *buffer, int count, int recursing) { int result, nwritten; @@ -362,7 +350,7 @@ int write_sock(void *buffer, int count, int recursing, int need_priv) restart: - if (winbind_open_pipe_sock(recursing, need_priv) == -1) { + if (winbind_open_pipe_sock(recursing) == -1) { return -1; } @@ -548,8 +536,7 @@ BOOL winbind_env_set( void ) * send simple types of requests */ -NSS_STATUS winbindd_send_request(int req_type, int need_priv, - struct winbindd_request *request) +NSS_STATUS winbindd_send_request(int req_type, struct winbindd_request *request) { struct winbindd_request lrequest; @@ -568,14 +555,12 @@ NSS_STATUS winbindd_send_request(int req_type, int need_priv, init_request(request, req_type); - if (write_sock(request, sizeof(*request), - request->flags & WBFLAG_RECURSE, need_priv) == -1) { + if (write_sock(request, sizeof(*request), request->flags & WBFLAG_RECURSE) == -1) { return NSS_STATUS_UNAVAIL; } if ((request->extra_len != 0) && - (write_sock(request->extra_data.data, request->extra_len, - request->flags & WBFLAG_RECURSE, need_priv) == -1)) { + (write_sock(request->extra_data.data, request->extra_len, request->flags & WBFLAG_RECURSE) == -1)) { return NSS_STATUS_UNAVAIL; } @@ -625,25 +610,7 @@ NSS_STATUS winbindd_request_response(int req_type, int count = 0; while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) { - status = winbindd_send_request(req_type, 0, request); - if (status != NSS_STATUS_SUCCESS) - return(status); - status = winbindd_get_response(response); - count += 1; - } - - return status; -} - -NSS_STATUS winbindd_priv_request_response(int req_type, - struct winbindd_request *request, - struct winbindd_response *response) -{ - NSS_STATUS status = NSS_STATUS_UNAVAIL; - int count = 0; - - while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) { - status = winbindd_send_request(req_type, 1, request); + status = winbindd_send_request(req_type, request); if (status != NSS_STATUS_SUCCESS) return(status); status = winbindd_get_response(response); diff --git a/source3/nsswitch/winbind_client.h b/source3/nsswitch/winbind_client.h index d80aff37fa..1d3d379af0 100644 --- a/source3/nsswitch/winbind_client.h +++ b/source3/nsswitch/winbind_client.h @@ -2,16 +2,13 @@ #include "winbindd_nss.h" void init_request(struct winbindd_request *req,int rq_type); -NSS_STATUS winbindd_send_request(int req_type, int need_priv, +NSS_STATUS winbindd_send_request(int req_type, struct winbindd_request *request); NSS_STATUS winbindd_get_response(struct winbindd_response *response); NSS_STATUS winbindd_request_response(int req_type, struct winbindd_request *request, struct winbindd_response *response); -NSS_STATUS winbindd_priv_request_response(int req_type, - struct winbindd_request *request, - struct winbindd_response *response); -int write_sock(void *buffer, int count, int recursing, int need_priv); +int write_sock(void *buffer, int count, int recursing); int read_reply(struct winbindd_response *response); void close_sock(void); void free_response(struct winbindd_response *response); diff --git a/source3/nsswitch/winbind_nss_irix.c b/source3/nsswitch/winbind_nss_irix.c index 5c6679f044..2fbf3e0df8 100644 --- a/source3/nsswitch/winbind_nss_irix.c +++ b/source3/nsswitch/winbind_nss_irix.c @@ -454,7 +454,7 @@ send_next_request(nsd_file_t *rq, struct winbindd_request *request) nsd_logprintf(NSD_LOG_MIN, "send_next_request (winbind) %d, timeout = %d sec\n", rq->f_cmd_data, timeout); - status = winbindd_send_request((int)rq->f_cmd_data,request,0); + status = winbindd_send_request((int)rq->f_cmd_data,request); SAFE_FREE(request); if (status != NSS_STATUS_SUCCESS) { -- cgit