diff options
author | Alexander Stetsenko <astetsenko@racktopsystems.com> | 2019-08-01 20:36:51 +0300 |
---|---|---|
committer | Toomas Soome <tsoome@me.com> | 2022-09-20 17:47:32 +0300 |
commit | 663b59f48c396b41650fffe9e2f20a85e9710c85 (patch) | |
tree | a772c191aeccec8d65b69698d3378ccec27c98bf | |
parent | 4f9241761deff31c4840b1283ffc458661ee7dca (diff) | |
download | illumos-gate-663b59f48c396b41650fffe9e2f20a85e9710c85.tar.gz |
14986 SMB Shares appear to be rename-able from Clients
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Reviewed by: Matt Barden <mbarden@tintri.com>
Approved by: Dan McDonald <danmcd@mnx.io>
-rw-r--r-- | usr/src/lib/smbsrv/libfksmbsrv/common/fake_vnode.c | 10 | ||||
-rw-r--r-- | usr/src/uts/common/fs/smbsrv/smb_fsops.c | 8 |
2 files changed, 16 insertions, 2 deletions
diff --git a/usr/src/lib/smbsrv/libfksmbsrv/common/fake_vnode.c b/usr/src/lib/smbsrv/libfksmbsrv/common/fake_vnode.c index 533a40fb28..ef04758481 100644 --- a/usr/src/lib/smbsrv/libfksmbsrv/common/fake_vnode.c +++ b/usr/src/lib/smbsrv/libfksmbsrv/common/fake_vnode.c @@ -11,6 +11,7 @@ /* * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2019 RackTop Systems. */ #include <sys/types.h> @@ -49,9 +50,14 @@ vn_compare(vnode_t *vp1, vnode_t *vp2) return (VN_CMP(vp1, vp2)); } -/* ARGSUSED */ +int +vn_ismntpt(vnode_t *vp __unused) +{ + return (0); +} + vfs_t * -vn_mountedvfs(vnode_t *vp) +vn_mountedvfs(vnode_t *vp __unused) { return (NULL); } 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); |