summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/smbsrv/smb_fsops.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/fs/smbsrv/smb_fsops.c')
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb_fsops.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/usr/src/uts/common/fs/smbsrv/smb_fsops.c b/usr/src/uts/common/fs/smbsrv/smb_fsops.c
index 4d6ffa5754..b5ada1db91 100644
--- a/usr/src/uts/common/fs/smbsrv/smb_fsops.c
+++ b/usr/src/uts/common/fs/smbsrv/smb_fsops.c
@@ -1194,6 +1194,14 @@ smb_fsop_rename(
if (rc != 0)
return (rc);
+ /*
+ * Make sure "from" vp is not a mount point.
+ */
+ if (from_vp->v_type == VDIR && vn_ismntpt(from_vp)) {
+ VN_RELE(from_vp);
+ return (EACCES);
+ }
+
if (from_attr.sa_dosattr & FILE_ATTRIBUTE_REPARSE_POINT) {
VN_RELE(from_vp);
return (EACCES);