diff --git a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp index 281fe9b371..48fe7a956f 100644 --- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp @@ -183,7 +183,7 @@ nfs4_open(fs_volume* volume, fs_vnode* vnode, int openMode, void** _cookie) { Inode* inode = reinterpret_cast(vnode->private_node); - if (inode->Type() == S_IFDIR) { + if (inode->Type() == S_IFDIR || inode->Type() == S_IFLNK) { *_cookie = NULL; return B_OK; } @@ -214,7 +214,7 @@ nfs4_free_cookie(fs_volume* volume, fs_vnode* vnode, void* _cookie) { Inode* inode = reinterpret_cast(vnode->private_node); - if (inode->Type() == S_IFDIR) + if (inode->Type() == S_IFDIR || inode->Type() == S_IFLNK) return B_OK; OpenFileCookie* cookie = reinterpret_cast(_cookie); @@ -234,6 +234,9 @@ nfs4_read(fs_volume* volume, fs_vnode* vnode, void* _cookie, off_t pos, if (inode->Type() == S_IFDIR) return B_IS_A_DIRECTORY; + if (inode->Type() == S_IFLNK) + return B_BAD_VALUE; + OpenFileCookie* cookie = reinterpret_cast(_cookie); return inode->Read(cookie, pos, buffer, length);