diff options
Diffstat (limited to 'usr/src/uts/common/fs/smbsrv/smb_fsops.c')
-rw-r--r-- | usr/src/uts/common/fs/smbsrv/smb_fsops.c | 8 |
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); |