From: Todd C. Miller Date: Thu, 10 Nov 2016 21:36:11 +0000 (-0700) Subject: Add checks for sudoers_locale early Defaults X-Git-Tag: SUDO_1_8_19^2~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52e136863f1c7ee51211f9827a4b216ec9ce6939;p=sudo Add checks for sudoers_locale early Defaults --- diff --git a/MANIFEST b/MANIFEST index 411a4cf21..2803d1a30 100644 --- 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 index 000000000..e5c355c2e --- /dev/null +++ b/plugins/sudoers/regress/visudo/test7.out.ok @@ -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 index 000000000..9f30923a7 --- /dev/null +++ b/plugins/sudoers/regress/visudo/test7.sh @@ -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 index 000000000..e8a2b1827 --- /dev/null +++ b/plugins/sudoers/regress/visudo/test8.err.ok @@ -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 index 000000000..16ebc4531 --- /dev/null +++ b/plugins/sudoers/regress/visudo/test8.out.ok @@ -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 index 000000000..6674a55c1 --- /dev/null +++ b/plugins/sudoers/regress/visudo/test8.sh @@ -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