From 2a50c07836d2750baf70442f8f760bf6cd43b3af Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Wed, 2 Jun 2010 10:24:59 -0700 Subject: Hurd: Fix linkat symlink handling. --- hurd/lookup-at.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'hurd/lookup-at.c') diff --git a/hurd/lookup-at.c b/hurd/lookup-at.c index 7f55527..728a970 100644 --- a/hurd/lookup-at.c +++ b/hurd/lookup-at.c @@ -30,8 +30,14 @@ __file_name_lookup_at (int fd, int at_flags, error_t err; file_t result; + if ((at_flags & AT_SYMLINK_FOLLOW) && (at_flags & AT_SYMLINK_NOFOLLOW)) + return (__hurd_fail (EINVAL), MACH_PORT_NULL); + flags |= (at_flags & AT_SYMLINK_NOFOLLOW) ? O_NOLINK : 0; at_flags &= ~AT_SYMLINK_NOFOLLOW; + if (at_flags & AT_SYMLINK_FOLLOW) + flags &= ~O_NOLINK; + at_flags &= ~AT_SYMLINK_FOLLOW; if (at_flags != 0) return (__hurd_fail (EINVAL), MACH_PORT_NULL); -- cgit v1.1