summaryrefslogtreecommitdiffstats
path: root/source3/smbd/trans2.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-10-26 18:44:01 +0000
committerJeremy Allison <jra@samba.org>1998-10-26 18:44:01 +0000
commit8546b7ec9486881261d3a97c893d4cb09b24461e (patch)
tree078034fb65b9515b5224188986b4981473770689 /source3/smbd/trans2.c
parent46fcd85b2dbe32c0f78a9382f8c3e2db92416391 (diff)
downloadsamba-8546b7ec9486881261d3a97c893d4cb09b24461e.tar.gz
samba-8546b7ec9486881261d3a97c893d4cb09b24461e.tar.xz
samba-8546b7ec9486881261d3a97c893d4cb09b24461e.zip
Fixed a couple of issues with the SMB_QUERY_FILE_ALL_INFO query.
Ensured offset was being reported correctly for 64 bit file access, ensured delete on close bit was being reported correctly. Jeremy. (This used to be commit 4332bc06c6604a3e14007eda4f40e6183a1f8526)
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index f0bd458798f..fdd3652cf74 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -1240,6 +1240,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
int l;
SMB_OFF_T pos = 0;
BOOL bad_path = False;
+ BOOL delete_pending = False;
if (tran_call == TRANSACT2_QFILEINFO) {
files_struct *fsp = file_fsp(params,0);
@@ -1276,6 +1277,8 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
}
if((pos = sys_lseek(fsp->fd_ptr->fd,0,SEEK_CUR)) == -1)
return(UNIXERROR(ERRDOS,ERRnoaccess));
+
+ delete_pending = fsp->fd_ptr->delete_on_close;
}
} else {
/* qpathinfo */
@@ -1429,7 +1432,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
SOFF_T(pdata,0,size);
SOFF_T(pdata,8,size);
SIVAL(pdata,16,sbuf.st_nlink);
- CVAL(pdata,20) = 0;
+ CVAL(pdata,20) = delete_pending;
CVAL(pdata,21) = (mode&aDIR)?1:0;
pdata += 24;
SINO_T(pdata,0,(SMB_INO_T)sbuf.st_ino);
@@ -1440,7 +1443,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
else
SIVAL(pdata,0,0xd01BF);
pdata += 4;
- SIVAL(pdata,0,pos); /* current offset */
+ SOFF_T(pdata,0,pos); /* current offset */
pdata += 8;
SIVAL(pdata,0,mode); /* is this the right sort of mode info? */
pdata += 4;