summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Stetsenko <astetsenko@racktopsystems.com>2019-08-01 20:36:51 +0300
committerToomas Soome <tsoome@me.com>2022-09-20 17:47:32 +0300
commit663b59f48c396b41650fffe9e2f20a85e9710c85 (patch)
treea772c191aeccec8d65b69698d3378ccec27c98bf
parent4f9241761deff31c4840b1283ffc458661ee7dca (diff)
downloadillumos-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.c10
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb_fsops.c8
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);