From 63336471f0e705e7259c9ecb0f9b473890ff5ffc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 21 Aug 2000 20:58:00 +0000 Subject: Update. * sysdeps/i370/Implies: Removed. * sysdeps/mvs/Implies: Removed. * catgets/catgets.c (catopen): Filter out env_var values with / if necessary. * locale/findlocale.c (_nl_find_locale): Move test for unusable locale name after all getenvs. --- locale/findlocale.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'locale') diff --git a/locale/findlocale.c b/locale/findlocale.c index 7c77dd8..275f7fc 100644 --- a/locale/findlocale.c +++ b/locale/findlocale.c @@ -54,11 +54,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, const char *revision; struct loaded_l10nfile *locale_file; - if ((*name)[0] == '\0' - /* In SUID binaries we must not allow people to access files - outside the dedicated locale directories. */ - || (__builtin_expect (__libc_enable_secure, 0) - && memchr (*name, '/', _nl_find_language (*name) - *name) != NULL)) + if ((*name)[0] == '\0') { /* The user decides which locale to use by setting environment variables. */ @@ -67,10 +63,13 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, *name = getenv (_nl_category_names[category]); if (*name == NULL || (*name)[0] == '\0') *name = getenv ("LANG"); - if (*name == NULL || (*name)[0] == '\0') - *name = (char *) _nl_C_name; } + if (*name == NULL || (*name)[0] == '\0' + || (__builtin_expect (__libc_enable_secure, 0) + && memchr (*name, '/', _nl_find_language (*name) - *name) != NULL)) + *name = (char *) _nl_C_name; + if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) { -- cgit v1.1