summaryrefslogtreecommitdiff
path: root/source3/smbd/trans2.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-02-07 20:46:36 -0800
committerJeremy Allison <jra@samba.org>2011-02-08 06:34:41 +0100
commite68f6adca9494166bf7c24c358ea1af718970b0d (patch)
tree59e037538cbd333b367615c690ed218f93b66878 /source3/smbd/trans2.c
parentdd7313a1307aa2b3e7d10678a2bce6690e1c2125 (diff)
downloadsamba-e68f6adca9494166bf7c24c358ea1af718970b0d.tar.gz
samba-e68f6adca9494166bf7c24c358ea1af718970b0d.tar.bz2
samba-e68f6adca9494166bf7c24c358ea1af718970b0d.zip
If possible (O_DIRECTORY exists) open an fd for a directory open.
Start of the move towards handle-based code for directory access. Currently makes fstat/fchown code work for directories rather than falling back to pathnames. Jeremy. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Tue Feb 8 06:34:41 CET 2011 on sn-devel-104
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 5865d05e44..2ce1fd746a 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -4827,7 +4827,7 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn,
uint16 num_file_acls = 0;
uint16 num_def_acls = 0;
- if (fsp && !fsp->is_directory && (fsp->fh->fd != -1)) {
+ if (fsp && fsp->fh->fd != -1) {
file_acl = SMB_VFS_SYS_ACL_GET_FD(fsp);
} else {
file_acl =
@@ -4920,7 +4920,7 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn,
enum brl_type lock_type;
/* We need an open file with a real fd for this. */
- if (!fsp || fsp->is_directory || fsp->fh->fd == -1) {
+ if (!fsp || fsp->fh->fd == -1) {
return NT_STATUS_INVALID_LEVEL;
}
@@ -5073,7 +5073,7 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
/* We know this name is ok, it's already passed the checks. */
- } else if(fsp->is_directory || fsp->fh->fd == -1) {
+ } else if(fsp->fh->fd == -1) {
/*
* This is actually a QFILEINFO on a directory
* handle (returned from an NT SMB). NT5.0 seems
@@ -5108,10 +5108,6 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
/*
* Original code - this is an open file.
*/
- if (!check_fsp(conn, req, fsp)) {
- return;
- }
-
if (SMB_VFS_FSTAT(fsp, &smb_fname->st) != 0) {
DEBUG(3, ("fstat of fnum %d failed (%s)\n",
fsp->fnum, strerror(errno)));
@@ -7885,7 +7881,7 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
return;
}
- if(fsp->is_directory || fsp->fh->fd == -1) {
+ if(fsp->fh->fd == -1) {
/*
* This is actually a SETFILEINFO on a directory
* handle (returned from an NT SMB). NT5.0 seems
@@ -7937,10 +7933,6 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
/*
* Original code - this is an open file.
*/
- if (!check_fsp(conn, req, fsp)) {
- return;
- }
-
if (SMB_VFS_FSTAT(fsp, &smb_fname->st) != 0) {
DEBUG(3,("call_trans2setfilepathinfo: fstat "
"of fnum %d failed (%s)\n", fsp->fnum,