The branch, master has been updated via 72696c3 lib: Fix a typo via eb4b319 messaging: Fix a memleak on error in messaging_tdb_init via 69300c0 lib: Avoid a strlen call in xx_path() via efed82c krb5_locator: Slightly simplify code via 30cd122 winbindd: Avoid using deallocated memory via bd55fdb messaging: Enforce just one messaging context via fb35d17 vfstext: Use just one messaging_context in vfstest via a93aaec spoolssd: Use only one messaging_context per process from 8f0d06f heimdal_build: only enable libintl functions if everything was found
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 72696c3f5a01da5ba07ee3495bd01c8288cb1b6d Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 31 15:28:04 2013 +0100 lib: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Kai Blin <k...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Thu Feb 20 22:58:59 CET 2014 on sn-devel-104 commit eb4b319a8e4226ae6cdc017078a029d9a6a3e143 Author: Volker Lendecke <v...@samba.org> Date: Sat Dec 28 14:18:32 2013 +0100 messaging: Fix a memleak on error in messaging_tdb_init Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Kai Blin <k...@samba.org> commit 69300c034f64e86439d2898a5832a400a8ee319a Author: Volker Lendecke <v...@samba.org> Date: Wed Jan 1 11:38:52 2014 +0100 lib: Avoid a strlen call in xx_path() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Kai Blin <k...@samba.org> commit efed82cb69499f6d7ed09b7263689e47e25a9d94 Author: Volker Lendecke <v...@samba.org> Date: Thu Feb 13 13:19:26 2014 +0000 krb5_locator: Slightly simplify code This makes it a bit easier to read for me Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Kai Blin <k...@samba.org> commit 30cd122beb32d0935afcd5bc2f3192f3c25aaeea Author: Santosh Kumar Pradhan <sprad...@redhat.com> Date: Thu Feb 20 15:51:37 2014 +0530 winbindd: Avoid using deallocated memory Failure in ads_search_retry() deallocates the memory occupied by "ads" which should not be used after. CID: 242096 Signed-off-by: Santosh Kumar Pradhan <sprad...@redhat.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ira Cooper <i...@samba.org> commit bd55fdbf09bd91351e097d4b71925c84de7b2a6e Author: Volker Lendecke <v...@samba.org> Date: Tue Feb 18 20:51:23 2014 +0100 messaging: Enforce just one messaging context The current messaging implementation is based on a tdb indexed by server_id. If we have more than one messaging context in a process, messages might not arrive at the right context and be dropped, depending on which signal handler is triggered first. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit fb35d17e438772a357c442f15932986affb7c927 Author: Volker Lendecke <v...@samba.org> Date: Tue Feb 18 20:51:57 2014 +0100 vfstext: Use just one messaging_context in vfstest Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit a93aaec77e114fb46f8873e943244b2542f9292a Author: Volker Lendecke <v...@samba.org> Date: Tue Feb 18 20:51:43 2014 +0100 spoolssd: Use only one messaging_context per process After the fork, the code created a fresh messaging_context before doing the reinit_after_fork. This means to have two initialized messaging contexts in that process. This patch aligns spoolssd with lsad. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: nsswitch/winbind_krb5_locator.c | 3 +-- source3/lib/cbuf.h | 4 ++-- source3/lib/messages_local.c | 21 +++++++++++++++++++++ source3/lib/util.c | 2 +- source3/printing/spoolssd.c | 2 +- source3/torture/vfstest.c | 6 ++++-- source3/winbindd/winbindd_ads.c | 2 +- 7 files changed, 31 insertions(+), 9 deletions(-) Changeset truncated at 500 lines: diff --git a/nsswitch/winbind_krb5_locator.c b/nsswitch/winbind_krb5_locator.c index 385a156..91a2d64 100644 --- a/nsswitch/winbind_krb5_locator.c +++ b/nsswitch/winbind_krb5_locator.c @@ -142,11 +142,10 @@ static int smb_krb5_locator_lookup_sanity_check(enum locate_service_type svc, switch (family) { case AF_UNSPEC: case AF_INET: - break; #if defined(HAVE_IPV6) case AF_INET6: - break; #endif + break; default: return EINVAL; } diff --git a/source3/lib/cbuf.h b/source3/lib/cbuf.h index b9c5552..3a1524c 100644 --- a/source3/lib/cbuf.h +++ b/source3/lib/cbuf.h @@ -222,7 +222,7 @@ char* cbuf_gets(cbuf* b, size_t idx); * @param[out] ost outstream * @param[in] s '\0' terminated string of printable characters. * - * @return numner of bytes written, -1 on error + * @return number of bytes written, -1 on error */ int cbuf_print_quoted_string(cbuf* ost, const char* s); @@ -237,7 +237,7 @@ int cbuf_print_quoted_string(cbuf* ost, const char* s); * @param[in] s string of bytes * @param[in] len number of bytes * - * @return numner of bytes written, -1 on error + * @return number of bytes written, -1 on error */ int cbuf_print_quoted(cbuf* ost, const char* s, size_t len); diff --git a/source3/lib/messages_local.c b/source3/lib/messages_local.c index 6b9c251..acc5ba6 100644 --- a/source3/lib/messages_local.c +++ b/source3/lib/messages_local.c @@ -53,6 +53,7 @@ struct messaging_tdb_context { struct tdb_wrap *tdb; struct tevent_signal *se; int received_messages; + bool *have_context; }; static NTSTATUS messaging_tdb_send(struct messaging_context *msg_ctx, @@ -77,6 +78,8 @@ static void messaging_tdb_signal_handler(struct tevent_context *ev_ctx, message_dispatch(ctx->msg_ctx); } +static int messaging_tdb_context_destructor(struct messaging_tdb_context *ctx); + /**************************************************************************** Initialise the messaging functions. ****************************************************************************/ @@ -88,6 +91,12 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, struct messaging_backend *result; struct messaging_tdb_context *ctx; struct loadparm_context *lp_ctx; + static bool have_context = false; + + if (have_context) { + DEBUG(0, ("No two messaging contexts per process\n")); + return NT_STATUS_OBJECT_NAME_COLLISION; + } if (!(result = talloc(mem_ctx, struct messaging_backend))) { DEBUG(0, ("talloc failed\n")); @@ -97,6 +106,7 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, lp_ctx = loadparm_init_s3(result, loadparm_s3_helpers()); if (lp_ctx == NULL) { DEBUG(0, ("loadparm_init_s3 failed\n")); + TALLOC_FREE(result); return NT_STATUS_INTERNAL_ERROR; } @@ -110,6 +120,7 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, result->send_fn = messaging_tdb_send; ctx->msg_ctx = msg_ctx; + ctx->have_context = &have_context; ctx->tdb = tdb_wrap_open(ctx, lock_path("messages.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE|TDB_INCOMPATIBLE_HASH, @@ -139,10 +150,20 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, sec_init(); + have_context = true; + talloc_set_destructor(ctx, messaging_tdb_context_destructor); + *presult = result; return NT_STATUS_OK; } +static int messaging_tdb_context_destructor(struct messaging_tdb_context *ctx) +{ + SMB_ASSERT(*ctx->have_context); + *ctx->have_context = false; + return 0; +} + bool messaging_tdb_parent_init(TALLOC_CTX *mem_ctx) { struct tdb_wrap *db; diff --git a/source3/lib/util.c b/source3/lib/util.c index 374bc5d..07daad2 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -1504,7 +1504,7 @@ static char *xx_path(const char *name, const char *rootpath) } } - return talloc_asprintf_append(fname, "/%s", name); + return talloc_asprintf_append_buffer(fname, "/%s", name); } /** diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c index 0b6980a..1bf87b3 100644 --- a/source3/printing/spoolssd.c +++ b/source3/printing/spoolssd.c @@ -285,7 +285,7 @@ static bool spoolss_child_init(struct tevent_context *ev_ctx, { NTSTATUS status; struct rpc_srv_callbacks spoolss_cb; - struct messaging_context *msg_ctx = messaging_init(NULL, ev_ctx); + struct messaging_context *msg_ctx = server_messaging_context(); bool ok; status = reinit_after_fork(msg_ctx, ev_ctx, diff --git a/source3/torture/vfstest.c b/source3/torture/vfstest.c index 2cec687..40d44c3 100644 --- a/source3/torture/vfstest.c +++ b/source3/torture/vfstest.c @@ -464,7 +464,7 @@ int main(int argc, char *argv[]) char *filename = NULL; char cwd[MAXPATHLEN]; TALLOC_CTX *frame = talloc_stackframe(); - struct tevent_context *ev = samba_tevent_context_init(NULL); + struct tevent_context *ev; struct auth_session_info *session_info = NULL; NTSTATUS status = NT_STATUS_OK; @@ -537,9 +537,11 @@ int main(int argc, char *argv[]) return 1; } + ev = server_event_context(); + status = create_conn_struct(vfs, ev, - messaging_init(vfs, ev), + server_messaging_context(), &vfs->conn, -1, getcwd(cwd, sizeof(cwd)), diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c index 18749c9..4f149a7 100644 --- a/source3/winbindd/winbindd_ads.c +++ b/source3/winbindd/winbindd_ads.c @@ -297,9 +297,9 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain, if (!ADS_ERR_OK(rc)) { DEBUG(1,("query_user_list ads_search: %s\n", ads_errstr(rc))); status = ads_ntstatus(rc); + goto done; } else if (!res) { DEBUG(1,("query_user_list ads_search returned NULL res\n")); - goto done; } -- Samba Shared Repository