Blob Blame History Raw
From 6947e4141016bb140dfae62cd71be9d9ba5d7060 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow@samba.org>
Date: Sat, 4 May 2019 12:12:04 +0200
Subject: [PATCH 1/2] s3:dbwrap: initialize messaging before getting the ctdb
 connection

This is a better fix for bug #13465.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13925

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit ca95d7f41b683b4d7ac59ed6ee709d44abfe2019)
---
 source3/lib/dbwrap/dbwrap_open.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/source3/lib/dbwrap/dbwrap_open.c b/source3/lib/dbwrap/dbwrap_open.c
index c8dfd9103a8..20084bca471 100644
--- a/source3/lib/dbwrap/dbwrap_open.c
+++ b/source3/lib/dbwrap/dbwrap_open.c
@@ -141,13 +141,19 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx,
 			struct messaging_context *msg_ctx;
 			struct ctdbd_connection *conn;
 
+			/*
+			 * Initialize messaging before getting the ctdb
+			 * connection, as the ctdb connection requires messaging
+			 * to be initialized.
+			 */
+			msg_ctx = global_messaging_context();
+
 			conn = messaging_ctdb_connection();
 			if (conn == NULL) {
 				DBG_WARNING("No ctdb connection\n");
 				errno = EIO;
 				return NULL;
 			}
-			msg_ctx = global_messaging_context();
 
 			result = db_open_ctdb(mem_ctx, msg_ctx, base,
 					      hash_size,
-- 
2.21.0


From ca5652c7ee22955fb1690534fe33759ccb008ee5 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow@samba.org>
Date: Sat, 4 May 2019 12:12:48 +0200
Subject: [PATCH 2/2] s3: remove now unneeded call to
 cmdline_messaging_context()

This was only needed as dbwrap_open() had a bug where it asked for the ctdb
connection before initializing messaging. The previous commit fixed that so we
can now safely remove the calls to cmdline_messaging_context() from all tools
that don't use messaging.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13925

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Thu Oct 24 09:33:47 UTC 2019 on sn-devel-184

(cherry picked from commit 9471508391fd3bcf199b1e94f8d9ee2b956e8f8e)
---
 source3/lib/popt_common_cmdline.c | 7 -------
 source3/utils/dbwrap_tool.c       | 2 --
 source3/utils/eventlogadm.c       | 3 ---
 source3/utils/ntlm_auth.c         | 2 --
 source3/utils/pdbedit.c           | 2 --
 source3/utils/sharesec.c          | 1 -
 source3/utils/smbget.c            | 2 --
 source3/utils/smbpasswd.c         | 2 --
 source3/utils/testparm.c          | 2 --
 9 files changed, 23 deletions(-)

diff --git a/source3/lib/popt_common_cmdline.c b/source3/lib/popt_common_cmdline.c
index 79e34847f48..39a787510a3 100644
--- a/source3/lib/popt_common_cmdline.c
+++ b/source3/lib/popt_common_cmdline.c
@@ -102,15 +102,8 @@ static void popt_common_credentials_callback(poptContext con,
 	}
 
 	if (reason == POPT_CALLBACK_REASON_POST) {
-		struct messaging_context *msg_ctx = NULL;
 		bool ok;
 
-		msg_ctx = cmdline_messaging_context(get_dyn_CONFIGFILE());
-		if (msg_ctx == NULL) {
-			fprintf(stderr, "Unable to initialize "
-				"messaging context\n");
-		}
-
 		ok = lp_load_client(get_dyn_CONFIGFILE());
 		if (!ok) {
 			const char *pname = poptGetInvocationName(con);
diff --git a/source3/utils/dbwrap_tool.c b/source3/utils/dbwrap_tool.c
index 2808a5d68bf..153a4459ee0 100644
--- a/source3/utils/dbwrap_tool.c
+++ b/source3/utils/dbwrap_tool.c
@@ -422,8 +422,6 @@ int main(int argc, const char **argv)
 		while (extra_argv[extra_argc]) extra_argc++;
 	}
 
-	cmdline_messaging_context(get_dyn_CONFIGFILE());
-
 	lp_load_global(get_dyn_CONFIGFILE());
 
 	if ((extra_argc < 2) || (extra_argc > 5)) {
diff --git a/source3/utils/eventlogadm.c b/source3/utils/eventlogadm.c
index db874dfae8a..2770fffa48c 100644
--- a/source3/utils/eventlogadm.c
+++ b/source3/utils/eventlogadm.c
@@ -473,9 +473,6 @@ int main( int argc, char *argv[] )
 		exit( 1 );
 	}
 
-	cmdline_messaging_context(configfile == NULL ?
-				  get_dyn_CONFIGFILE() : configfile);
-
 	if ( configfile == NULL ) {
 		lp_load_global(get_dyn_CONFIGFILE());
 	} else if (!lp_load_global(configfile)) {
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index 2be641c891c..87f6554ae4f 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -2504,8 +2504,6 @@ enum {
 
 	poptFreeContext(pc);
 
-	cmdline_messaging_context(get_dyn_CONFIGFILE());
-
 	if (!lp_load_global(get_dyn_CONFIGFILE())) {
 		d_fprintf(stderr, "ntlm_auth: error opening config file %s. Error was %s\n",
 			get_dyn_CONFIGFILE(), strerror(errno));
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
index 74f8c3b0b2f..14edbaeceea 100644
--- a/source3/utils/pdbedit.c
+++ b/source3/utils/pdbedit.c
@@ -1128,8 +1128,6 @@ int main(int argc, const char **argv)
 	if (user_name == NULL)
 		user_name = poptGetArg(pc);
 
-	cmdline_messaging_context(get_dyn_CONFIGFILE());
-
 	if (!lp_load_global(get_dyn_CONFIGFILE())) {
 		fprintf(stderr, "Can't load %s - run testparm to debug it\n", get_dyn_CONFIGFILE());
 		exit(1);
diff --git a/source3/utils/sharesec.c b/source3/utils/sharesec.c
index 2ea81b9adfa..10c347eaac3 100644
--- a/source3/utils/sharesec.c
+++ b/source3/utils/sharesec.c
@@ -501,7 +501,6 @@ int main(int argc, const char *argv[])
 
 	setlinebuf(stdout);
 
-	cmdline_messaging_context(get_dyn_CONFIGFILE());
 	lp_load_with_registry_shares(get_dyn_CONFIGFILE());
 
 	/* check for initializing secrets.tdb first */
diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c
index 58690be56e3..a948a336445 100644
--- a/source3/utils/smbget.c
+++ b/source3/utils/smbget.c
@@ -1003,8 +1003,6 @@ int main(int argc, char **argv)
 
 	popt_burn_cmdline_password(argc, argv);
 
-	cmdline_messaging_context(get_dyn_CONFIGFILE());
-
 	if (smbc_init(get_auth_data, opt.debuglevel) < 0) {
 		fprintf(stderr, "Unable to initialize libsmbclient\n");
 		return 1;
diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c
index 8e2b9d7f80f..a6509abe5cb 100644
--- a/source3/utils/smbpasswd.c
+++ b/source3/utils/smbpasswd.c
@@ -197,8 +197,6 @@ static int process_options(int argc, char **argv, int local_flags)
 		usage();
 	}
 
-	cmdline_messaging_context(configfile);
-
 	if (!lp_load_global(configfile)) {
 		fprintf(stderr, "Can't load %s - run testparm to debug it\n", 
 			configfile);
diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c
index efa58a6a417..9ba625da4bf 100644
--- a/source3/utils/testparm.c
+++ b/source3/utils/testparm.c
@@ -742,8 +742,6 @@ static void do_per_share_checks(int s)
 		goto done;
 	}
 
-	cmdline_messaging_context(config_file);
-
 	fprintf(stderr,"Load smb config files from %s\n",config_file);
 
 	if (!lp_load_with_registry_shares(config_file)) {
-- 
2.21.0