]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(_nl_find_locale): Move test for unusable locale name after all getenvs.
authorUlrich Drepper <drepper@redhat.com>
Mon, 21 Aug 2000 21:02:42 +0000 (21:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 21 Aug 2000 21:02:42 +0000 (21:02 +0000)
locale/findlocale.c

index 1eac186f162544249dfb6d2dea8cf2948d6a0446..e6d229a4de90c87cf7e0e842bf65c59ea4acfd14 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -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.  */
-      || (__libc_enable_secure
-         && 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 (strcmp (*name, _nl_C_name) == 0 || strcmp (*name, _nl_POSIX_name) == 0)
     {
       /* We need not load anything.  The needed data is contained in