diff options
author | Jeremy Allison <jra@samba.org> | 1998-10-26 18:44:01 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1998-10-26 18:44:01 +0000 |
commit | 8546b7ec9486881261d3a97c893d4cb09b24461e (patch) | |
tree | 078034fb65b9515b5224188986b4981473770689 | |
parent | 46fcd85b2dbe32c0f78a9382f8c3e2db92416391 (diff) | |
download | samba-8546b7ec9486881261d3a97c893d4cb09b24461e.tar.gz samba-8546b7ec9486881261d3a97c893d4cb09b24461e.tar.bz2 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)
-rw-r--r-- | source3/smbd/trans2.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index f0bd458798..fdd3652cf7 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; |