[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed Apr 25 20:50:03 UTC 2018


The branch, master has been updated
       via  a6fade4 rpc_server: Fix NetSessEnum with stale sessions
       via  e04846c selftest: Add testcase for querying sessions after smbd crash
       via  501819f rpcclient: Print number of entries for NetSessEnum
       via  0e1125d s4/smbd/server.c: create /run if missing
      from  35f2afe printing: return the same error code as windows does on upload failures

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


- Log -----------------------------------------------------------------
commit a6fade4e10760284ef56abf45d3fa70038091cbe
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Apr 24 13:53:41 2018 -0700

    rpc_server: Fix NetSessEnum with stale sessions
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13407
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Wed Apr 25 22:49:07 CEST 2018 on sn-devel-144

commit e04846c7df8e3eec1f3dbb2fc5eaf47ceb1c44d2
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Apr 24 13:52:59 2018 -0700

    selftest: Add testcase for querying sessions after smbd crash
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13407
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 501819fa9e7926c2f54cb92d508ac0e8437fd476
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Apr 24 12:18:49 2018 -0700

    rpcclient: Print number of entries for NetSessEnum
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13407
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 0e1125da58970869c34b14163c2db0adb9ac924b
Author: William Brown <william at blackhats.net.au>
Date:   Wed Apr 18 19:44:33 2018 +1000

    s4/smbd/server.c: create /run if missing
    
    In some cases (containers mainly) /var/run may not be present. Instead of
    erroring, we should create it at startup.
    
    Signed-off-by: William Brown <william at blackhats.net.au>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 source3/rpcclient/cmd_srvsvc.c                     |  2 +
 source3/script/tests/test_rpcclient_netsessenum.sh | 55 ++++++++++++++++++++++
 source3/selftest/tests.py                          |  6 +++
 source3/smbd/session.c                             |  4 ++
 source4/smbd/server.c                              |  4 ++
 5 files changed, 71 insertions(+)
 create mode 100755 source3/script/tests/test_rpcclient_netsessenum.sh


Changeset truncated at 500 lines:

diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c
index e7929e7..f78fb9a1 100644
--- a/source3/rpcclient/cmd_srvsvc.c
+++ b/source3/rpcclient/cmd_srvsvc.c
@@ -883,6 +883,8 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli,
 		goto done;
 	}
 
+	d_printf("Received %d entries.\n", total_entries);
+
  done:
 	return result;
 }
diff --git a/source3/script/tests/test_rpcclient_netsessenum.sh b/source3/script/tests/test_rpcclient_netsessenum.sh
new file mode 100755
index 0000000..9abb3ae
--- /dev/null
+++ b/source3/script/tests/test_rpcclient_netsessenum.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# Blackbox tests for the rpcclient srvsvc commands
+#
+# Copyright (C) 2018 Christof Schmitt
+
+if [ $# -lt 6 ]; then
+cat <<EOF
+Usage: $0 DOMAIN ADMIN_USER ADMIN_PASSWORD SERVER RPCCLIENT SMBTORTURE3 SHARE
+EOF
+exit 1;
+fi
+
+DOMAIN="$1"
+ADMIN_USER="$2"
+ADMIN_PASSWORD="$3"
+SERVER="$4"
+RPCCLIENT="$5"
+SMBTORTURE3="$6"
+SHARE="$7"
+
+USERPASS="-U$DOMAIN/$ADMIN_USER%$ADMIN_PASSWORD"
+RPCCLIENTCMD="$RPCCLIENT $SERVER $USERPASS"
+
+incdir=$(dirname $0)/../../../testprogs/blackbox
+. $incdir/subunit.sh
+
+failed=0
+
+#
+# Verify initial number of sessions.
+#
+$RPCCLIENTCMD -c NetSessEnum | grep Received
+RC=$?
+testit "netsessenum" test $RC = 0 || failed=$(expr $failed + 1)
+
+OUT=$($RPCCLIENTCMD -c NetSessEnum | grep Received)
+test "$OUT" = "Received 1 entries."
+RC=$?
+testit "count1" test $RC -eq 0  || failed=$(expr $failed + 1)
+
+#
+# Inject smbd crash
+#
+$SMBTORTURE3 //"$SERVER"/"$SHARE" "$USERPASS" CLEANUP1
+
+#
+# Verify number of sessions after crash
+#
+OUT=$($RPCCLIENTCMD -c NetSessEnum | grep Received)
+test "$OUT" = "Received 1 entries."
+RC=$?
+testit "count2" test $RC -eq 0  || failed=$(expr $failed + 1)
+
+testok $0 $failed
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 06bda70..810cb5e 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -639,6 +639,12 @@ plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
                "$USERNAME", "$PASSWORD", "$SERVER",
                smbclient3])
 
+plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
+              [os.path.join(samba3srcdir,
+                            "script/tests/test_rpcclient_netsessenum.sh"),
+               "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
+               os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
+
 # The ktest environment uses:
 # server min protocol = SMB3_00
 # client max protocol = SMB3
diff --git a/source3/smbd/session.c b/source3/smbd/session.c
index 4ddb856..8b4c660 100644
--- a/source3/smbd/session.c
+++ b/source3/smbd/session.c
@@ -139,6 +139,10 @@ static int gather_sessioninfo(const char *key, struct sessionid *session,
 		return 0;
 	}
 
+	if (!process_exists(session->pid)) {
+		return 0;
+	}
+
 	sesslist->sessions = talloc_realloc(
 		sesslist->mem_ctx, sesslist->sessions, struct sessionid,
 		sesslist->count+1);
diff --git a/source4/smbd/server.c b/source4/smbd/server.c
index 431fbad..beac4ff 100644
--- a/source4/smbd/server.c
+++ b/source4/smbd/server.c
@@ -498,6 +498,10 @@ static int binary_smbd_main(const char *binary_name,
 		mkdir(lpcfg_lock_directory(cmdline_lp_ctx), 0755);
 	}
 
+	if (!directory_exist(lpcfg_pid_directory(cmdline_lp_ctx))) {
+		mkdir(lpcfg_pid_directory(cmdline_lp_ctx), 0755);
+	}
+
 	pidfile_create(lpcfg_pid_directory(cmdline_lp_ctx), binary_name);
 
 	if (lpcfg_server_role(cmdline_lp_ctx) == ROLE_ACTIVE_DIRECTORY_DC) {


-- 
Samba Shared Repository



More information about the samba-cvs mailing list