From 310b3460e0740903996b838e9f9f5842c579cb0f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 14 Apr 1998 16:51:08 +0000 Subject: Update. 1998-04-14 16:34 Ulrich Drepper * test-skeleton.c: Provide hook for initializing code before the fork. * rt/tst-aio.c: Use PREPARE hook to make suer temp files are always removed. * libio/fcloseall.c (__fcloseall): Return return value of _IO_cleanup. * libio/genops.c (_IO_cleanup): Return return value of _IO_flush_all. * libio/libioP.h: Adopt _IO_cleanup prototype. * stdlib/Makefile (tests): Add test-canon2. * stdlib/test-canon2.c: New file. * stdlib/canonicalize.c (canonicalize): Allow RESOLVED parameter to be NULL. Use __lxstat, not __lstat. Correctly recognize long symlink sequences. (__realpath): Make real function which checks RESOLVED parameter for not being NULL. 1998-04-14 Ulrich Drepper * catgets/open_catalog.c (__open_catalog): Fix problems with reading non-files. Always close file. Reported by Cristian Gafton . * elf/dl-minimal.c (__strtol_internal): Prevent overflow warnings. 1998-04-14 13:28 Ulrich Drepper * libc.map: Add various low-level I/O functions. 1998-04-14 10:35 Ulrich Drepper * string/Makefile (routines): Remove strerror_r. * string/strerror_r.c: Removed. * string/strerror.c: Call __strerror_r for doing the real work. * sysdeps/generic/_strerror.c: Rename function to __strerror_r and add weak alias strerror_r. * sysdeps/mach/_strerror.c: Likewise. * assert/assert-perr.c: Use __strerror_r instead of _strerror_internal. * elf/dl-error.c (_dl_signal_error): Likewise. * elf/dl-profile.c (_dl_start_profile): Likewise. * gmon/gmon.c (write_gmon): Likewise. * stdio-common/perror.c: Likewise. * stdio-common/vfprintf.c: Likewise. 1998-04-10 Mark Kettenis * sysdeps/unix/sysv/linux/Makefile [$(subdir)=inet] (sysdep_headers): Add netatalk/at.h. 1998-04-12 Andreas Schwab * manual/socket.texi, manual/creature.texi, manual/time.texi: Formatting fixes. 1998-04-13 Andreas Schwab * posix/regex.c: Rename __re_syntax_options back to re_syntax_options, aliases do not work with global variables due to copy relocations. (regex_compile): Use syntax parameter instead of re_syntax_options. 1998-04-14 Andreas Jaeger * configure.in: Document that enable-force-install is default. --- catgets/open_catalog.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'catgets/open_catalog.c') diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c index 62fb111e43..2197eb8363 100644 --- a/catgets/open_catalog.c +++ b/catgets/open_catalog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -35,7 +35,7 @@ void __open_catalog (__nl_catd catalog) { - int fd; + int fd = -1; struct stat st; int swapping; @@ -169,7 +169,8 @@ __open_catalog (__nl_catd catalog) } } - if (fd < 0 || __fstat (fd, &st) < 0) + /* Avoid dealing with directories and block devices */ + if (fd < 0 || __fstat (fd, &st) < 0 || !S_ISREG (st.st_mode)) { catalog->status = nonexisting; goto unlock_return; @@ -225,6 +226,7 @@ __open_catalog (__nl_catd catalog) /* We don't need the file anymore. */ __close (fd); + fd = -1; /* Determine whether the file is a catalog file and if yes whether it is written using the correct byte order. Else we have to swap @@ -271,5 +273,7 @@ __open_catalog (__nl_catd catalog) /* Release the lock again. */ unlock_return: + if (fd != -1) + __close (fd); __libc_lock_unlock (catalog->lock); } -- cgit v1.2.3