summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-20 12:10:21 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-20 12:10:21 +0000
commit97373eb4d3988e5591d81dd2a16a109ab50b0dc1 (patch)
tree5ceaffb13ddf440dfc805d18fdbda4113338b029
parent523cf3e81df93cc6b0b28d17c3dc3576ef165c03 (diff)
(_nl_find_locale): Use _nl_find_locale to get language part it drop
the value is path element is contained.
-rw-r--r--locale/findlocale.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/locale/findlocale.c b/locale/findlocale.c
index d73ba4a395..4e8460ee4a 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
@@ -20,6 +20,7 @@
#include <locale.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include "localeinfo.h"
@@ -61,7 +62,11 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
const char *revision;
struct loaded_l10nfile *locale_file;
- if ((*name)[0] == '\0')
+ 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))
{
/* The user decides which locale to use by setting environment
variables. */