diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-04-14 16:51:08 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-04-14 16:51:08 +0000 |
commit | 310b3460e0740903996b838e9f9f5842c579cb0f (patch) | |
tree | 990ca922d3253d536fb71f3f70ac90467e5dc75e /catgets | |
parent | bbdc8261f84c22c8c82cc51fa84c70efb1b7ab99 (diff) | |
download | glibc-310b3460e0740903996b838e9f9f5842c579cb0f.zip glibc-310b3460e0740903996b838e9f9f5842c579cb0f.tar.gz glibc-310b3460e0740903996b838e9f9f5842c579cb0f.tar.bz2 |
Update.
1998-04-14 16:34 Ulrich Drepper <drepper@cygnus.com>
* 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 <drepper@cygnus.com>
* catgets/open_catalog.c (__open_catalog): Fix problems with
reading non-files. Always close file.
Reported by Cristian Gafton <gafton@redhat.com>.
* elf/dl-minimal.c (__strtol_internal): Prevent overflow warnings.
1998-04-14 13:28 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add various low-level I/O functions.
1998-04-14 10:35 Ulrich Drepper <drepper@cygnus.com>
* 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 <kettenis@phys.uva.nl>
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=inet]
(sysdep_headers): Add netatalk/at.h.
1998-04-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/socket.texi, manual/creature.texi, manual/time.texi:
Formatting fixes.
1998-04-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* 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 <aj@arthur.rhein-neckar.de>
* configure.in: Document that enable-force-install is default.
Diffstat (limited to 'catgets')
-rw-r--r-- | catgets/open_catalog.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c index 62fb111..2197eb8 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, <drepper@gnu.ai.mit.edu>. @@ -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); } |