Mercurial > hg > octave-lojdl > gnulib-hg
changeset 14559:38c2156144b4
careadlinkat: Guard against misuse of careadlinkatcwd.
* lib/careadlinkat.c: Include <stdlib.h>.
(careadlinkatcwd): Check that the fd argument is as expected.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 09 Apr 2011 20:59:16 +0200 |
parents | 2fecee8e8803 |
children | ff63cf60e142 |
files | ChangeLog lib/careadlinkat.c |
diffstat | 2 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-04-09 Bruno Haible <bruno@clisp.org> + + careadlinkat: Guard against misuse of careadlinkatcwd. + * lib/careadlinkat.c: Include <stdlib.h>. + (careadlinkatcwd): Check that the fd argument is as expected. + 2011-04-09 Bruno Haible <bruno@clisp.org> careadlinkat: Use common coding style.
--- a/lib/careadlinkat.c +++ b/lib/careadlinkat.c @@ -24,6 +24,7 @@ #include <errno.h> #include <limits.h> +#include <stdlib.h> #include <string.h> #include <unistd.h> @@ -39,14 +40,17 @@ #include "allocator.h" #if ! HAVE_READLINKAT -/* Ignore FD. Get the symbolic link value of FILENAME and put it into - BUFFER, with size BUFFER_SIZE. This function acts like readlink - but has readlinkat's signature. */ +/* Get the symbolic link value of FILENAME and put it into BUFFER, with + size BUFFER_SIZE. This function acts like readlink but has + readlinkat's signature. */ ssize_t careadlinkatcwd (int fd, char const *filename, char *buffer, size_t buffer_size) { - (void) fd; + /* FD must be AT_FDCWD here, otherwise the caller is using this + function in contexts for which it was not meant for. */ + if (fd != AT_FDCWD) + abort (); return readlink (filename, buffer, buffer_size); } #endif