From 9797d17d5460d5816c9f78099ebc09df88247d1b Mon Sep 17 00:00:00 2001 From: David van Moolenbroek Date: Wed, 20 May 2009 09:46:06 +0000 Subject: [PATCH] move symlink type check for readlink() into VFS, and return the right POSIX error --- servers/vfs/link.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/servers/vfs/link.c b/servers/vfs/link.c index e2fb29610..fd342593d 100644 --- a/servers/vfs/link.c +++ b/servers/vfs/link.c @@ -356,6 +356,13 @@ PUBLIC int do_rdlink() r = lookup_vp(PATH_RET_SYMLINK, 0 /*!use_realuid*/, &vp); if (r != OK) return r; + /* Make sure this is a symbolic link */ + if ((vp->v_mode & I_TYPE) != I_SYMBOLIC_LINK) { + put_vnode(vp); + + return EINVAL; + } + /* Issue request */ r= req_rdlink(vp->v_fs_e, vp->v_inode_nr, who_e, (vir_bytes)m_in.name2, copylen); -- 2.44.0