]> granicus.if.org Git - sudo/commitdiff
Add checks for sudoers_locale early Defaults
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 10 Nov 2016 21:36:11 +0000 (14:36 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 10 Nov 2016 21:36:11 +0000 (14:36 -0700)
MANIFEST
plugins/sudoers/regress/visudo/test7.out.ok [new file with mode: 0644]
plugins/sudoers/regress/visudo/test7.sh [new file with mode: 0755]
plugins/sudoers/regress/visudo/test8.err.ok [new file with mode: 0644]
plugins/sudoers/regress/visudo/test8.out.ok [new file with mode: 0644]
plugins/sudoers/regress/visudo/test8.sh [new file with mode: 0755]

index 411a4cf21f59af5c4385c7357b42391a3c4754f1..2803d1a30870d279c2a5dd03683c647554a967d7 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -466,6 +466,11 @@ plugins/sudoers/regress/visudo/test5.out.ok
 plugins/sudoers/regress/visudo/test5.sh
 plugins/sudoers/regress/visudo/test6.out.ok
 plugins/sudoers/regress/visudo/test6.sh
+plugins/sudoers/regress/visudo/test7.out.ok
+plugins/sudoers/regress/visudo/test7.sh
+plugins/sudoers/regress/visudo/test8.err.ok
+plugins/sudoers/regress/visudo/test8.out.ok
+plugins/sudoers/regress/visudo/test8.sh
 plugins/sudoers/set_perms.c
 plugins/sudoers/solaris_audit.c
 plugins/sudoers/solaris_audit.h
diff --git a/plugins/sudoers/regress/visudo/test7.out.ok b/plugins/sudoers/regress/visudo/test7.out.ok
new file mode 100644 (file)
index 0000000..e5c355c
--- /dev/null
@@ -0,0 +1 @@
+stdin: parsed OK
diff --git a/plugins/sudoers/regress/visudo/test7.sh b/plugins/sudoers/regress/visudo/test7.sh
new file mode 100755 (executable)
index 0000000..9f30923
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Test sudoers_locale early Defaults
+#
+
+LANG=C; export LANG
+LC_NUMERIC=fr_FR.UTF-8; export LC_NUMERIC
+
+# First check that visudo supports non-C locales
+# Note that older versions of sudo did not set the locale
+# until sudoers was read so this check will fail on them.
+./visudo -csf - >/dev/null 2>&1 <<-EOF
+       Defaults    sudoers_locale = fr_FR.UTF-8
+       Defaults    passwd_timeout = "2,5"
+       EOF
+
+# Now make sure we can set passwd_timeout to a floating point value
+# using a non-C locale.
+if [ $? -eq 0 ]; then
+    ./visudo -csf - <<-EOF
+       Defaults    passwd_timeout = "2,5"
+       Defaults    sudoers_locale = fr_FR.UTF-8
+       EOF
+else
+    # No support for LC_NUMERIC?
+    echo "stdin: parsed OK"
+fi
+
+exit 0
diff --git a/plugins/sudoers/regress/visudo/test8.err.ok b/plugins/sudoers/regress/visudo/test8.err.ok
new file mode 100644 (file)
index 0000000..e8a2b18
--- /dev/null
@@ -0,0 +1 @@
+visudo: stdin:1 value "2.5" is invalid for option "passwd_timeout"
diff --git a/plugins/sudoers/regress/visudo/test8.out.ok b/plugins/sudoers/regress/visudo/test8.out.ok
new file mode 100644 (file)
index 0000000..16ebc45
--- /dev/null
@@ -0,0 +1 @@
+parse error in stdin near line 1
diff --git a/plugins/sudoers/regress/visudo/test8.sh b/plugins/sudoers/regress/visudo/test8.sh
new file mode 100755 (executable)
index 0000000..6674a55
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Test sudoers_locale early Defaults
+#
+
+LANG=C; export LANG
+LC_NUMERIC=fr_FR.UTF-8; export LC_NUMERIC
+
+# First check that visudo supports non-C locales
+# Note that older versions of sudo did not set the locale
+# until sudoers was read so this check will fail on them.
+./visudo -csf - >/dev/null 2>&1 <<-EOF
+       Defaults    sudoers_locale = fr_FR.UTF-8
+       Defaults    passwd_timeout = "2,5"
+       EOF
+
+# Now make sure we can set passwd_timeout to a floating point value
+# using a non-C locale.
+if [ $? -eq 0 ]; then
+    ./visudo -csf - <<-EOF
+       Defaults    passwd_timeout = "2.5"
+       Defaults    sudoers_locale = fr_FR.UTF-8
+       EOF
+else
+    # No support for LC_NUMERIC?
+    echo "parse error in stdin near line 1"
+    echo 'visudo: stdin:1 value "2.5" is invalid for option "passwd_timeout"' 1>&2
+fi
+
+exit 0