summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb2_change_notify.c7
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb_fsops.c6
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb_notify.c4
3 files changed, 15 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/smbsrv/smb2_change_notify.c b/usr/src/uts/common/fs/smbsrv/smb2_change_notify.c
index 911e3544f6..1aab018e80 100644
--- a/usr/src/uts/common/fs/smbsrv/smb2_change_notify.c
+++ b/usr/src/uts/common/fs/smbsrv/smb2_change_notify.c
@@ -22,6 +22,7 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates.
* Copyright 2018 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2022 RackTop Systems, Inc.
*/
/*
@@ -80,8 +81,10 @@ smb2_change_notify(smb_request_t *sr)
if (iFlags & SMB2_WATCH_TREE)
CompletionFilter |= FILE_NOTIFY_CHANGE_EV_SUBDIR;
- if (oBufLength > smb2_max_trans)
- oBufLength = smb2_max_trans;
+ if (oBufLength > smb2_max_trans) {
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto errout;
+ }
/*
* Check for events and consume, non-blocking.
diff --git a/usr/src/uts/common/fs/smbsrv/smb_fsops.c b/usr/src/uts/common/fs/smbsrv/smb_fsops.c
index 1d46497877..ef58f15fa8 100644
--- a/usr/src/uts/common/fs/smbsrv/smb_fsops.c
+++ b/usr/src/uts/common/fs/smbsrv/smb_fsops.c
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2012-2021 Tintri by DDN, Inc. All rights reserved.
+ * Copyright 2022 RackTop Systems, Inc.
*/
#include <sys/sid.h>
@@ -2335,6 +2336,11 @@ smb_fsop_aclwrite(smb_request_t *sr, cred_t *cr, smb_node_t *snode,
flags = ATTR_NOACLCHECK;
error = smb_vop_acl_write(snode->vp, acl, flags, cr);
+ if (error == 0 && snode->n_dnode != NULL) {
+ // FILE_NOTIFY_CHANGE_SECURITY
+ smb_node_notify_change(snode->n_dnode,
+ FILE_ACTION_MODIFIED, snode->od_name);
+ }
}
if (dacl && sacl)
diff --git a/usr/src/uts/common/fs/smbsrv/smb_notify.c b/usr/src/uts/common/fs/smbsrv/smb_notify.c
index 602fa1db3b..4a79026b8b 100644
--- a/usr/src/uts/common/fs/smbsrv/smb_notify.c
+++ b/usr/src/uts/common/fs/smbsrv/smb_notify.c
@@ -22,6 +22,7 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2020 Tintri by DDN, Inc. All rights reserved.
+ * Copyright 2022 RackTop Systems, Inc.
*/
/*
@@ -198,6 +199,9 @@ smb_notify_act1(smb_request_t *sr, uint32_t buflen, uint32_t filter)
return (NT_STATUS_INVALID_PARAMETER);
}
+ if ((of->f_granted_access & FILE_LIST_DIRECTORY) == 0)
+ return (NT_STATUS_ACCESS_DENIED);
+
mutex_enter(&of->f_mutex);
/*