The branch, master has been updated
       via  3bc8880 ctdb-tests: Add tests for event scripts with multiple '.'s
       via  7720ca0 ctdb-common: Ignore event scripts with multiple '.'s
      from  f6d6af3 vfs_catia: Fix a potential memleak

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


- Log -----------------------------------------------------------------
commit 3bc8880ea0532abed1db002710d3dd6a91f750dc
Author: Amitay Isaacs <ami...@gmail.com>
Date:   Thu Oct 12 14:44:03 2017 +1100

    ctdb-tests: Add tests for event scripts with multiple '.'s
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13070
    
    Signed-off-by: Amitay Isaacs <ami...@gmail.com>
    Reviewed-by: Martin Schwenke <mar...@meltin.net>
    
    Autobuild-User(master): Martin Schwenke <mart...@samba.org>
    Autobuild-Date(master): Wed Oct 18 10:19:48 CEST 2017 on sn-devel-144

commit 7720ca0729b127a93d78401aaf1341d79f9603a4
Author: Amitay Isaacs <ami...@gmail.com>
Date:   Thu Oct 12 14:42:59 2017 +1100

    ctdb-common: Ignore event scripts with multiple '.'s
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13070
    
    This avoids running event script copies left by a package manager.
    
    Signed-off-by: Amitay Isaacs <ami...@gmail.com>
    Reviewed-by: Martin Schwenke <mar...@meltin.net>

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

Summary of changes:
 ctdb/common/run_event.c           |  6 ++++++
 ctdb/config/events.d/README       |  4 +++-
 ctdb/tests/cunit/run_event_001.sh | 21 +++++++++++++++++++++
 3 files changed, 30 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/ctdb/common/run_event.c b/ctdb/common/run_event.c
index e5d562c..0961d65 100644
--- a/ctdb/common/run_event.c
+++ b/ctdb/common/run_event.c
@@ -60,6 +60,12 @@ static int script_filter(const struct dirent *de)
                return 0;
        }
 
+       /* Ignore filenames with multiple '.'s */
+       ptr = index(&de->d_name[3], '.');
+       if (ptr != NULL) {
+               return 0;
+       }
+
        return 1;
 }
 
diff --git a/ctdb/config/events.d/README b/ctdb/config/events.d/README
index 36f94bb..7025a4b 100644
--- a/ctdb/config/events.d/README
+++ b/ctdb/config/events.d/README
@@ -11,7 +11,9 @@ alphanumeric sort order.
 
 As a special case, any eventscript that ends with a '~' character will be
 ignored since this is a common postfix that some editors will append to
-older versions of a file.
+older versions of a file.  Similarly, any eventscript with multiple '.'s
+will be ignored as package managers can create copies with additional
+suffix starting with '.' (e.g. .rpmnew, .dpkg-dist).
 
 Only executable event scripts are run by CTDB.  Any event script that
 does not have execute permission is ignored.
diff --git a/ctdb/tests/cunit/run_event_001.sh 
b/ctdb/tests/cunit/run_event_001.sh
index f0ffe4f..35c256b 100755
--- a/ctdb/tests/cunit/run_event_001.sh
+++ b/ctdb/tests/cunit/run_event_001.sh
@@ -37,6 +37,27 @@ required_result 1 <<EOF
 EOF
 unit_test test -x "${scriptdir}/prog"
 
+cat > "$scriptdir/10.test.rpmnew" <<EOF
+#!/bin/sh
+
+echo hello
+EOF
+chmod +x "$scriptdir/10.test.rpmnew"
+
+# Invalid script with multiple '.'s
+ok <<EOF
+No event scripts found
+EOF
+unit_test run_event_test "$scriptdir" list
+
+ok <<EOF
+Script disable 10.test.rpmnew completed with result=22
+EOF
+unit_test run_event_test "$scriptdir" disable 10.test.rpmnew
+
+ok_null
+unit_test test -x "${scriptdir}/10.test.rpmnew"
+
 cat > "$scriptdir/11.foo" <<EOF
 #!/bin/sh
 


-- 
Samba Shared Repository

Reply via email to