[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Tue Nov 28 14:32:03 UTC 2017


The branch, master has been updated
       via  8b6f581 systemd: Start processes in forground and without a process group
       via  8736013 s4:samba: Allow samba daemon to run in foreground
       via  bfafabf s4:samba: Do not segfault if we run into issues
      from  deaaff6 s3/loadparm: don't mark IPC$ as autoloaded

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


- Log -----------------------------------------------------------------
commit 8b6f58194da7e849cdb9d20712dff49b17a93a77
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Nov 10 09:32:27 2017 +0100

    systemd: Start processes in forground and without a process group
    
    We should not double fork in notify mode or systemd think something
    during startup will be wrong and send SIGTERM to the process. So
    sometimes the daemon will not start up correctly.
    
    systemd will also handle the process group.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13129
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Tue Nov 28 15:31:27 CET 2017 on sn-devel-144

commit 8736013dc42c5755b75bbb2e843a290bcd545909
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Nov 10 09:18:18 2017 +0100

    s4:samba: Allow samba daemon to run in foreground
    
    We are passing the no_process_group to become_daemon() that setsid() is
    not called. In case we are double forking, we run in SysV daemon mode,
    setsid() should be called!
    
    See:
    https://www.freedesktop.org/software/systemd/man/daemon.html
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13129
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit bfafabfb942668328401a3c89fc55b50dc56c209
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Nov 15 10:00:52 2017 +0100

    s4:samba: Do not segfault if we run into issues
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 packaging/systemd/nmb.service     |  2 +-
 packaging/systemd/samba.service   |  2 +-
 packaging/systemd/smb.service     |  2 +-
 packaging/systemd/winbind.service |  2 +-
 source3/smbd/server.c             |  2 +-
 source4/smbd/server.c             | 19 +++++++++++++++++--
 6 files changed, 22 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/packaging/systemd/nmb.service b/packaging/systemd/nmb.service
index 992c0cd..71c93d6 100644
--- a/packaging/systemd/nmb.service
+++ b/packaging/systemd/nmb.service
@@ -7,7 +7,7 @@ Type=notify
 NotifyAccess=all
 PIDFile=/run/nmbd.pid
 EnvironmentFile=-/etc/sysconfig/samba
-ExecStart=/usr/sbin/nmbd $NMBDOPTIONS
+ExecStart=/usr/sbin/nmbd --foreground --no-process-group $NMBDOPTIONS
 ExecReload=/usr/bin/kill -HUP $MAINPID
 LimitCORE=infinity
 
diff --git a/packaging/systemd/samba.service b/packaging/systemd/samba.service
index 824f89c..1b64c3b 100644
--- a/packaging/systemd/samba.service
+++ b/packaging/systemd/samba.service
@@ -8,7 +8,7 @@ NotifyAccess=all
 PIDFile=/run/samba.pid
 LimitNOFILE=16384
 EnvironmentFile=-/etc/sysconfig/samba
-ExecStart=/usr/sbin/samba $SAMBAOPTIONS
+ExecStart=/usr/sbin/samba --foreground --no-process-group $SAMBAOPTIONS
 ExecReload=/usr/bin/kill -HUP $MAINPID
 
 [Install]
diff --git a/packaging/systemd/smb.service b/packaging/systemd/smb.service
index 6053a5c..adf6684 100644
--- a/packaging/systemd/smb.service
+++ b/packaging/systemd/smb.service
@@ -8,7 +8,7 @@ NotifyAccess=all
 PIDFile=/run/smbd.pid
 LimitNOFILE=16384
 EnvironmentFile=-/etc/sysconfig/samba
-ExecStart=/usr/sbin/smbd $SMBDOPTIONS
+ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS
 ExecReload=/usr/bin/kill -HUP $MAINPID
 LimitCORE=infinity
 
diff --git a/packaging/systemd/winbind.service b/packaging/systemd/winbind.service
index c511488..46b3797 100644
--- a/packaging/systemd/winbind.service
+++ b/packaging/systemd/winbind.service
@@ -7,7 +7,7 @@ Type=notify
 NotifyAccess=all
 PIDFile=/run/winbindd.pid
 EnvironmentFile=-/etc/sysconfig/samba
-ExecStart=/usr/sbin/winbindd "$WINBINDOPTIONS"
+ExecStart=/usr/sbin/winbindd --foreground --no-process-group "$WINBINDOPTIONS"
 ExecReload=/usr/bin/kill -HUP $MAINPID
 LimitCORE=infinity
 
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 9167276..5b421ff 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -1593,7 +1593,7 @@ extern void build_options(bool screen);
 	struct poptOption long_options[] = {
 	POPT_AUTOHELP
 	{"daemon", 'D', POPT_ARG_NONE, NULL, OPT_DAEMON, "Become a daemon (default)" },
-	{"interactive", 'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE, "Run interactive (not a daemon)"},
+	{"interactive", 'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE, "Run interactive (not a daemon) and log to stdout"},
 	{"foreground", 'F', POPT_ARG_NONE, NULL, OPT_FORK, "Run daemon in foreground (for daemontools, etc.)" },
 	{"no-process-group", '\0', POPT_ARG_NONE, NULL, OPT_NO_PROCESS_GROUP, "Don't create a new process group" },
 	{"log-stdout", 'S', POPT_ARG_NONE, NULL, OPT_LOG_STDOUT, "Log to stdout" },
diff --git a/source4/smbd/server.c b/source4/smbd/server.c
index eef0f7b..006f76b 100644
--- a/source4/smbd/server.c
+++ b/source4/smbd/server.c
@@ -105,8 +105,16 @@ static void cleanup_tmp_files(struct loadparm_context *lp_ctx)
 {
 	char *path;
 	TALLOC_CTX *mem_ctx = talloc_new(NULL);
+	if (mem_ctx == NULL) {
+		exit_daemon("Failed to create memory context",
+			    ENOMEM);
+	}
 
 	path = smbd_tmp_path(mem_ctx, lp_ctx, NULL);
+	if (path == NULL) {
+		exit_daemon("Failed to cleanup temporary files",
+			    EINVAL);
+	}
 
 	recursive_delete(path);
 	talloc_free(mem_ctx);
@@ -359,6 +367,7 @@ static int binary_smbd_main(const char *binary_name,
 				const char *argv[])
 {
 	bool opt_daemon = false;
+	bool opt_fork = true;
 	bool opt_interactive = false;
 	bool opt_no_process_group = false;
 	int opt;
@@ -374,6 +383,7 @@ static int binary_smbd_main(const char *binary_name,
 	struct stat st;
 	enum {
 		OPT_DAEMON = 1000,
+		OPT_FOREGROUND,
 		OPT_INTERACTIVE,
 		OPT_PROCESS_MODEL,
 		OPT_SHOW_BUILD,
@@ -383,6 +393,8 @@ static int binary_smbd_main(const char *binary_name,
 		POPT_AUTOHELP
 		{"daemon", 'D', POPT_ARG_NONE, NULL, OPT_DAEMON,
 		 "Become a daemon (default)", NULL },
+		{"foreground", 'F', POPT_ARG_NONE, NULL, OPT_FOREGROUND,
+		 "Run the daemon in foreground", NULL },
 		{"interactive",	'i', POPT_ARG_NONE, NULL, OPT_INTERACTIVE,
 		 "Run interactive (not a daemon)", NULL},
 		{"model", 'M', POPT_ARG_STRING,	NULL, OPT_PROCESS_MODEL,
@@ -409,6 +421,9 @@ static int binary_smbd_main(const char *binary_name,
 		case OPT_DAEMON:
 			opt_daemon = true;
 			break;
+		case OPT_FOREGROUND:
+			opt_fork = false;
+			break;
 		case OPT_INTERACTIVE:
 			opt_interactive = true;
 			break;
@@ -435,7 +450,7 @@ static int binary_smbd_main(const char *binary_name,
 			"not allowed together with -D|--daemon\n\n");
 		poptPrintUsage(pc, stderr, 0);
 		return 1;
-	} else if (!opt_interactive) {
+	} else if (!opt_interactive && !opt_fork) {
 		/* default is --daemon */
 		opt_daemon = true;
 	}
@@ -472,7 +487,7 @@ static int binary_smbd_main(const char *binary_name,
 
 	if (opt_daemon) {
 		DBG_NOTICE("Becoming a daemon.\n");
-		become_daemon(true, false, false);
+		become_daemon(opt_fork, opt_no_process_group, false);
 	}
 
 	/* Create the memory context to hang everything off. */


-- 
Samba Shared Repository



More information about the samba-cvs mailing list