diff options
Diffstat (limited to 'source4/ntvfs/posix/pvfs_read.c')
-rw-r--r-- | source4/ntvfs/posix/pvfs_read.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source4/ntvfs/posix/pvfs_read.c b/source4/ntvfs/posix/pvfs_read.c index 24142a81ee..7256fd8e16 100644 --- a/source4/ntvfs/posix/pvfs_read.c +++ b/source4/ntvfs/posix/pvfs_read.c @@ -35,15 +35,18 @@ NTSTATUS pvfs_read(struct ntvfs_module_context *ntvfs, NTSTATUS status; if (rd->generic.level != RAW_READ_READX) { - return NT_STATUS_NOT_SUPPORTED; + return ntvfs_map_read(req, rd, ntvfs); } - f = pvfs_find_fd(pvfs, req, rd->readx.in.fnum); if (!f) { return NT_STATUS_INVALID_HANDLE; } + if (f->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) { + return NT_STATUS_FILE_IS_A_DIRECTORY; + } + status = pvfs_check_lock(pvfs, f, req->smbpid, rd->readx.in.offset, rd->readx.in.maxcnt, |