summaryrefslogtreecommitdiff
path: root/tests/kernel/namelen.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/kernel/namelen.sh')
-rwxr-xr-xtests/kernel/namelen.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/kernel/namelen.sh b/tests/kernel/namelen.sh
new file mode 100755
index 0000000..1a17455
--- /dev/null
+++ b/tests/kernel/namelen.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# namelen.sh: Test for validating namelen reported by eCryptfs
+# Author: Tyler Hicks <tyhicks@canonical.com>
+#
+# Copyright (C) 2014 Canonical Ltd.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+test_script_dir=$(dirname $0)
+rc=1
+
+. ${test_script_dir}/../lib/etl_funcs.sh
+
+test_cleanup()
+{
+ etl_remove_test_dir "$test_dir"
+ etl_umount
+ etl_lumount
+ etl_unlink_keys
+ exit $rc
+}
+trap test_cleanup 0 1 2 3 15
+
+etl_add_keys || exit
+etl_lmount || exit
+etl_mount_i || exit
+test_dir=$(etl_create_test_dir) || exit
+test_file="$test_dir/a"
+
+namelen=$(getconf NAME_MAX "$test_dir")
+[ $namelen -le 0 ] && exit
+
+# Make sure we can create any file up to namelen chars long
+for ((i=1; i <= $namelen; i++)); do
+ touch "$test_file" || exit
+ rm $test_file
+ test_file+=a
+done
+
+# Throw an error if creating a file (namelen + 1) chars long succeeds
+test_file+=a
+touch "$test_file" 2>/dev/null && exit
+
+rc=0
+exit