[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Tue Apr 24 15:19:02 UTC 2018


The branch, master has been updated
       via  ffeb2ac winbind: Speed up wbinfo -p
       via  fdf0b2a nsswitch: Only connect to the priv socket if required
       via  6120f56 ntlm_auth: PAM_AUTH_CRAP needs a privileged socket
       via  ffe9700 nsswitch: fix memory leak in winbind_open_pipe_sock() when the privileged pipe is not accessable.
      from  8e5cc97 s3:messages: improve tevent_create_immediate recycling

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit ffeb2acf65ef0b669f57b3f6f047db03b2f1a6c6
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Apr 18 17:29:51 2018 +0200

    winbind: Speed up wbinfo -p
    
    This was (possibly) used as an example in the early days of the async winbind
    code we have today. It's not necessary to send this through a full tevent_req
    round.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Tue Apr 24 17:18:23 CEST 2018 on sn-devel-144

commit fdf0b2a784f83f9fcaa204be7f28f9e7fc47836b
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Apr 23 12:13:40 2018 +0200

    nsswitch: Only connect to the priv socket if required
    
    This should speed up calls like "wbinfo -p"
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 6120f568017544425071c9ad817faa236fd27058
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Apr 23 14:04:48 2018 +0200

    ntlm_auth: PAM_AUTH_CRAP needs a privileged socket
    
    This only works right now because wb_common always tries privileged
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit ffe970007bf934955f72ec2d73bf8f94a2b796eb
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Apr 24 10:59:05 2018 +0200

    nsswitch: fix memory leak in winbind_open_pipe_sock() when the privileged pipe is not accessable.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13400
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 nsswitch/wb_common.c              | 10 ++++++---
 source3/utils/ntlm_auth.c         |  6 ++++-
 source3/winbindd/wb_ping.c        | 46 ---------------------------------------
 source3/winbindd/winbindd.c       |  3 +--
 source3/winbindd/winbindd_misc.c  |  6 +++++
 source3/winbindd/winbindd_proto.h |  6 -----
 source3/winbindd/wscript_build    |  1 -
 7 files changed, 19 insertions(+), 59 deletions(-)
 delete mode 100644 source3/winbindd/wb_ping.c


Changeset truncated at 500 lines:

diff --git a/nsswitch/wb_common.c b/nsswitch/wb_common.c
index d6746b4..6768fde 100644
--- a/nsswitch/wb_common.c
+++ b/nsswitch/wb_common.c
@@ -401,6 +401,10 @@ static int winbind_open_pipe_sock(struct winbindd_context *ctx,
 		return -1;
 	}
 
+	if (need_priv == 0) {
+		return ctx->winbindd_fd;
+	}
+
 	/* try and get priv pipe */
 
 	request.wb_flags = WBFLAG_RECURSE;
@@ -420,14 +424,14 @@ static int winbind_open_pipe_sock(struct winbindd_context *ctx,
 			ctx->winbindd_fd = fd;
 			ctx->is_privileged = 1;
 		}
+
+		SAFE_FREE(response.extra_data.data);
 	}
 
-	if ((need_priv != 0) && (ctx->is_privileged == 0)) {
+	if (ctx->is_privileged == 0) {
 		return -1;
 	}
 
-	SAFE_FREE(response.extra_data.data);
-
 	return ctx->winbindd_fd;
 #else
 	return -1;
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index 2c8d991..d3146cc 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -593,7 +593,11 @@ NTSTATUS contact_winbind_auth_crap(const char *username,
                 request.data.auth_crap.nt_resp_len = nt_response->length;
 	}
 
-	result = winbindd_request_response(NULL, WINBINDD_PAM_AUTH_CRAP, &request, &response);
+	result = winbindd_priv_request_response(
+		NULL,
+		WINBINDD_PAM_AUTH_CRAP,
+		&request,
+		&response);
 	SAFE_FREE(request.extra_data.data);
 
 	/* Display response */
diff --git a/source3/winbindd/wb_ping.c b/source3/winbindd/wb_ping.c
deleted file mode 100644
index bfba3c1..0000000
--- a/source3/winbindd/wb_ping.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   async implementation of WINBINDD_PING
-   Copyright (C) Volker Lendecke 2009
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "winbindd.h"
-
-struct wb_ping_state {
-	uint8_t dummy;
-};
-
-struct tevent_req *wb_ping_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
-				struct winbindd_cli_state *cli,
-				struct winbindd_request *request)
-{
-	struct tevent_req *req;
-	struct wb_ping_state *state;
-
-	req = tevent_req_create(mem_ctx, &state, struct wb_ping_state);
-	if (req == NULL) {
-		return NULL;
-	}
-	tevent_req_done(req);
-	tevent_req_post(req, ev);
-	return req;
-}
-
-NTSTATUS wb_ping_recv(struct tevent_req *req, struct winbindd_response *presp)
-{
-	return NT_STATUS_OK;
-}
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index b908d91..76d644b 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -535,6 +535,7 @@ static struct winbindd_dispatch_table {
 	/* Miscellaneous */
 
 	{ WINBINDD_INFO, winbindd_info, "INFO" },
+	{ WINBINDD_PING, winbindd_ping, "PING" },
 	{ WINBINDD_INTERFACE_VERSION, winbindd_interface_version,
 	  "INTERFACE_VERSION" },
 	{ WINBINDD_DOMAIN_NAME, winbindd_domain_name, "DOMAIN_NAME" },
@@ -565,8 +566,6 @@ struct winbindd_async_dispatch_table {
 };
 
 static struct winbindd_async_dispatch_table async_nonpriv_table[] = {
-	{ WINBINDD_PING, "PING",
-	  wb_ping_send, wb_ping_recv },
 	{ WINBINDD_LOOKUPSID, "LOOKUPSID",
 	  winbindd_lookupsid_send, winbindd_lookupsid_recv },
 	{ WINBINDD_LOOKUPSIDS, "LOOKUPSIDS",
diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c
index 964190e..c101269 100644
--- a/source3/winbindd/winbindd_misc.c
+++ b/source3/winbindd/winbindd_misc.c
@@ -502,6 +502,12 @@ void winbindd_dc_info(struct winbindd_cli_state *cli)
 	request_ok(cli);
 }
 
+void winbindd_ping(struct winbindd_cli_state *state)
+{
+	DEBUG(3, ("[%5lu]: ping\n", (unsigned long)state->pid));
+	request_ok(state);
+}
+
 /* List various tidbits of information */
 
 void winbindd_info(struct winbindd_cli_state *state)
diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
index 6a63b15..bbc6841 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -529,12 +529,6 @@ bool parse_xidlist(TALLOC_CTX *mem_ctx, const char *xidstr,
 
 void winbindd_wins_byname(struct winbindd_cli_state *state);
 
-struct tevent_req *wb_ping_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
-				struct winbindd_cli_state *cli,
-				struct winbindd_request *request);
-NTSTATUS wb_ping_recv(struct tevent_req *req,
-		      struct winbindd_response *resp);
-
 enum winbindd_result winbindd_dual_ping(struct winbindd_domain *domain,
 					struct winbindd_cli_state *state);
 
diff --git a/source3/winbindd/wscript_build b/source3/winbindd/wscript_build
index 48250ea..0adbe9c 100644
--- a/source3/winbindd/wscript_build
+++ b/source3/winbindd/wscript_build
@@ -198,7 +198,6 @@ bld.SAMBA3_BINARY('winbindd',
                  winbindd_idmap.c
                  winbindd_locator.c
                  winbindd_ndr.c
-                 wb_ping.c
                  wb_lookupsid.c
                  wb_lookupsids.c
                  wb_lookupname.c


-- 
Samba Shared Repository



More information about the samba-cvs mailing list