The Samba-Bugzilla – Attachment 7328 Details for
Bug 8760
Smbd wipes out the share mode lock entries of other file servers which are unregistered
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 3.6.next
0001-s3-Add-SERVERID_UNIQUE_ID_NOT_TO_VERIFY-bug-8760.patch (text/plain), 3.00 KB, created by
Jeremy Allison
on 2012-02-16 23:47:54 UTC
(
hide
)
Description:
git-am fix for 3.6.next
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2012-02-16 23:47:54 UTC
Size:
3.00 KB
patch
obsolete
>From a2d10f1367620ae080da48baee0c0a8d1648d42b Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Thu, 16 Feb 2012 14:22:42 -0800 >Subject: [PATCH] s3: Add SERVERID_UNIQUE_ID_NOT_TO_VERIFY, bug 8760 > >Back-port of commit dd5868d41eeaa304a471822d7783526d9f4c37f5 >from master. Back-port done by Manoj Dahal <mdahal@novell.com>. >--- > source3/include/serverid.h | 9 +++++++++ > source3/lib/serverid.c | 16 ++++++++++++++++ > source3/smbd/server.c | 6 ++---- > 3 files changed, 27 insertions(+), 4 deletions(-) > >diff --git a/source3/include/serverid.h b/source3/include/serverid.h >index 62bf638..435c88b 100644 >--- a/source3/include/serverid.h >+++ b/source3/include/serverid.h >@@ -22,6 +22,9 @@ > > #include "includes.h" > >+/** Don't verify this unique id */ >+#define SERVERID_UNIQUE_ID_NOT_TO_VERIFY 0xFFFFFFFFFFFFFFFFULL >+ > /* > * Register a server with its unique id > */ >@@ -64,4 +67,10 @@ bool serverid_traverse_read(int (*fn)(const struct server_id *id, > */ > bool serverid_parent_init(TALLOC_CTX *mem_ctx); > >+/* >+ * Get a random unique_id and make sure that it is not >+ * SERVERID_UNIQUE_ID_NOT_TO_VERIFY >+ */ >+uint64_t serverid_get_random_unique_id(void); >+ > #endif >diff --git a/source3/lib/serverid.c b/source3/lib/serverid.c >index 8cd7f5a..00dd6c4 100644 >--- a/source3/lib/serverid.c >+++ b/source3/lib/serverid.c >@@ -241,6 +241,10 @@ bool serverid_exists(const struct server_id *id) > return false; > } > >+ if (id->unique_id == SERVERID_UNIQUE_ID_NOT_TO_VERIFY) { >+ return true; >+ } >+ > db = serverid_db(); > if (db == NULL) { > return false; >@@ -355,3 +359,15 @@ bool serverid_traverse(int (*fn)(struct db_record *rec, > state.private_data = private_data; > return db->traverse(db, serverid_traverse_fn, &state); > } >+ >+uint64_t serverid_get_random_unique_id(void) >+{ >+ uint64_t unique_id = SERVERID_UNIQUE_ID_NOT_TO_VERIFY; >+ >+ while (unique_id == SERVERID_UNIQUE_ID_NOT_TO_VERIFY) { >+ generate_random_buffer((uint8_t *)&unique_id, >+ sizeof(unique_id)); >+ } >+ >+ return unique_id; >+} >diff --git a/source3/smbd/server.c b/source3/smbd/server.c >index db68ace..28bb947 100644 >--- a/source3/smbd/server.c >+++ b/source3/smbd/server.c >@@ -447,7 +447,7 @@ static void smbd_accept_connection(struct tevent_context *ev, > * Generate a unique id in the parent process so that we use > * the global random state in the parent. > */ >- generate_random_buffer((uint8_t *)&unique_id, sizeof(unique_id)); >+ unique_id = serverid_get_random_unique_id(); > > pid = sys_fork(); > if (pid == 0) { >@@ -920,7 +920,6 @@ extern void build_options(bool screen); > struct smbd_parent_context *parent = NULL; > TALLOC_CTX *frame; > NTSTATUS status; >- uint64_t unique_id; > > /* > * Do this before any other talloc operation >@@ -1119,8 +1118,7 @@ extern void build_options(bool screen); > become_daemon(Fork, no_process_group, log_stdout); > } > >- generate_random_buffer((uint8_t *)&unique_id, sizeof(unique_id)); >- set_my_unique_id(unique_id); >+ set_my_unique_id(serverid_get_random_unique_id()); > > #if HAVE_SETPGID > /* >-- >1.7.7.3 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
vl
:
review+
Actions:
View
Attachments on
bug 8760
:
7313
|
7319
|
7320
|
7322
|
7326
| 7328