]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Fix coredump on failing chdir during logoff
authorChristof Schmitt <cs@samba.org>
Wed, 13 Dec 2017 18:34:23 +0000 (11:34 -0700)
committerKarolin Seeger <kseeger@samba.org>
Tue, 2 Jan 2018 13:01:29 +0000 (14:01 +0100)
server_exit does an internal tree disconnect which requires a chdir to
the share directory. In case the file system encountered a problem and
the chdir call returns an error, this triggers a SERVER_EXIT_ABNORMAL
which in turn results in a panic and a coredump. As the log already
indicates the problem (chdir returned an error), avoid the
SERVER_EXIT_ABNORMAL in this case and not trigger a coredump.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13189

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Sat Dec 16 01:56:06 CET 2017 on sn-devel-144

(cherry picked from commit 7fa91fc4791d076c609eaf119753e38dd3c50a1c)

Autobuild-User(v4-6-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-6-test): Tue Jan  2 14:01:29 CET 2018 on sn-devel-144

selftest/knownfail
source3/smbd/server_exit.c

index e259ccc3e85b9711c0d16c2717c3c0cf73fce019..6e1d0589922d4c1d9e1fe51949f0513dc8dc41d7 100644 (file)
 ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_rank_none.*
 ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_security_descriptor.*
 ^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion\(nt4_dc\)
-^samba3.blackbox.smbd_error.check_panic_2
index bf50394f4bfc067feb2de2544b327b6b04f802cb..04a2932538f26fcfaf30f9e553754afd7ddae945 100644 (file)
@@ -149,8 +149,6 @@ static void exit_server_common(enum server_exit_reason how,
                        DEBUG(0, ("exit_server_common: "
                                  "smb1srv_tcon_disconnect_all() failed (%s) - "
                                  "triggering cleanup\n", nt_errstr(status)));
-                       how = SERVER_EXIT_ABNORMAL;
-                       reason = "smb1srv_tcon_disconnect_all failed";
                }
 
                status = smbXsrv_session_logoff_all(xconn);
@@ -160,8 +158,6 @@ static void exit_server_common(enum server_exit_reason how,
                        DEBUG(0, ("exit_server_common: "
                                  "smbXsrv_session_logoff_all() failed (%s) - "
                                  "triggering cleanup\n", nt_errstr(status)));
-                       how = SERVER_EXIT_ABNORMAL;
-                       reason = "smbXsrv_session_logoff_all failed";
                }
        }