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 <v...@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 <v...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> Autobuild-User(master): Volker Lendecke <v...@samba.org> Autobuild-Date(master): Tue Apr 24 17:18:23 CEST 2018 on sn-devel-144 commit fdf0b2a784f83f9fcaa204be7f28f9e7fc47836b Author: Volker Lendecke <v...@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 <v...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 6120f568017544425071c9ad817faa236fd27058 Author: Volker Lendecke <v...@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 <v...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit ffe970007bf934955f72ec2d73bf8f94a2b796eb Author: Stefan Metzmacher <me...@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 <me...@samba.org> Reviewed-by: Volker Lendecke <v...@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