diff options
author | ache <ache@FreeBSD.org> | 1997-04-07 08:54:38 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1997-04-07 08:54:38 +0000 |
commit | 7b1360495da7bd7306ddeea3a9ddb95a483233ae (patch) | |
tree | 8ba3017cb8ed5f902d750c3aa3a11f5ca86a887f /lib/libc/locale/setlocale.c | |
parent | 42b08e73160ea8e6dc0d62f41a73acb091c3cc39 (diff) | |
download | FreeBSD-src-7b1360495da7bd7306ddeea3a9ddb95a483233ae.zip FreeBSD-src-7b1360495da7bd7306ddeea3a9ddb95a483233ae.tar.gz |
Restore PATH_LOCALE functionality using issetugid() call now
Diffstat (limited to 'lib/libc/locale/setlocale.c')
-rw-r--r-- | lib/libc/locale/setlocale.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/libc/locale/setlocale.c b/lib/libc/locale/setlocale.c index 58de9ea..4b7a1b1 100644 --- a/lib/libc/locale/setlocale.c +++ b/lib/libc/locale/setlocale.c @@ -33,12 +33,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: setlocale.c,v 1.20 1997/02/22 14:59:56 peter Exp $ */ #ifdef LIBC_RCS static const char rcsid[] = - "$Id$"; + "$Id: setlocale.c,v 1.20 1997/02/22 14:59:56 peter Exp $"; #endif #if defined(LIBC_SCCS) && !defined(lint) @@ -222,8 +222,19 @@ loadlocale(category) char *new = new_categories[category]; char *old = current_categories[category]; - if (!_PathLocale) - _PathLocale = _PATH_LOCALE; + if (_PathLocale == NULL) { + char *p = getenv("PATH_LOCALE"); + + if (p != NULL && !issetugid()) { + if (strlen(p) + 1/*"/"*/ + ENCODING_LEN + + 1/*"/"*/ + CATEGORY_LEN >= PATH_MAX) + return (NULL); + _PathLocale = strdup(p); + if (_PathLocale == NULL) + return (NULL); + } else + _PathLocale = _PATH_LOCALE; + } if (strcmp(new, old) == 0) return (old); |