summaryrefslogtreecommitdiff
path: root/source3/smbd/dir.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-10-31 12:38:20 -0700
committerJeremy Allison <jra@samba.org>2011-11-01 16:38:14 -0700
commita763edaf9c76afe2546c035fc090370301dd347b (patch)
treec0d330551b3e0d24e9e4ad3d83a406f03f2032a3 /source3/smbd/dir.c
parenta11c0a41a35aa2b1c14333552045a65e3e50df1e (diff)
downloadsamba-a763edaf9c76afe2546c035fc090370301dd347b.tar.gz
samba-a763edaf9c76afe2546c035fc090370301dd347b.tar.bz2
samba-a763edaf9c76afe2546c035fc090370301dd347b.zip
Call check_parent_access() on readdir.
Diffstat (limited to 'source3/smbd/dir.c')
-rw-r--r--source3/smbd/dir.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index cc74886810..18c5935fdb 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -427,6 +427,7 @@ NTSTATUS dptr_create(connection_struct *conn, files_struct *fsp,
struct smbd_server_connection *sconn = conn->sconn;
struct dptr_struct *dptr = NULL;
struct smb_Dir *dir_hnd;
+ NTSTATUS status;
if (fsp && fsp->is_directory && fsp->fh->fd != -1) {
path = fsp->fsp_name->base_name;
@@ -443,6 +444,18 @@ NTSTATUS dptr_create(connection_struct *conn, files_struct *fsp,
return NT_STATUS_INVALID_PARAMETER;
}
+ status = check_parent_access(conn,
+ path,
+ SEC_DIR_LIST,
+ NULL);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(5,("dptr_create: parent access check for path "
+ "%s failed with %s\n",
+ path,
+ nt_errstr(status)));
+ return status;
+ }
+
if (fsp) {
dir_hnd = OpenDir_fsp(NULL, conn, fsp, wcard, attr);
} else {