diff options
author | Jeremy Allison <jra@samba.org> | 2004-05-14 22:08:19 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2004-05-14 22:08:19 +0000 |
commit | 0f051b6d516996d756603adf324684728482120d (patch) | |
tree | 9dbf5fe2676e2974598547990b3f1a7b521fde19 /source/smbd | |
parent | 69063deb569b7928d015810b0c14eed78b0afd1d (diff) | |
download | samba-0f051b6d516996d756603adf324684728482120d.tar.gz samba-0f051b6d516996d756603adf324684728482120d.tar.xz samba-0f051b6d516996d756603adf324684728482120d.zip |
r742: Volker discovered that we can truncate a locked file. Well I never ! :-).
Jeremy
Diffstat (limited to 'source/smbd')
-rw-r--r-- | source/smbd/open.c | 24 |
1 files changed, 2 insertions, 22 deletions
diff --git a/source/smbd/open.c b/source/smbd/open.c index 235a455f302..f072dc4be47 100644 --- a/source/smbd/open.c +++ b/source/smbd/open.c @@ -242,30 +242,10 @@ static BOOL open_file(files_struct *fsp,connection_struct *conn, return True; } -/**************************************************************************** - C. Hoch 11/22/95 - Helper for open_file_shared. - Truncate a file after checking locking; close file if locked. - **************************************************************************/ - -static int truncate_unless_locked(struct connection_struct *conn, files_struct *fsp) -{ - SMB_BIG_UINT mask = (SMB_BIG_UINT)-1; - - if (is_locked(fsp,fsp->conn,mask,0,WRITE_LOCK,True)){ - errno = EACCES; - unix_ERR_class = ERRDOS; - unix_ERR_code = ERRlock; - unix_ERR_ntstatus = dos_to_ntstatus(ERRDOS, ERRlock); - return -1; - } else { - return SMB_VFS_FTRUNCATE(fsp,fsp->fd,0); - } -} - /******************************************************************* return True if the filename is one of the special executable types ********************************************************************/ + static BOOL is_executable(const char *fname) { if ((fname = strrchr_m(fname,'.'))) { @@ -1109,7 +1089,7 @@ flags=0x%X flags2=0x%X mode=0%o returned %d\n", /* * We are modifing the file after open - update the stat struct.. */ - if ((truncate_unless_locked(conn,fsp) == -1) || (SMB_VFS_FSTAT(fsp,fsp->fd,psbuf)==-1)) { + if ((SMB_VFS_FTRUNCATE(fsp,fsp->fd,0) == -1) || (SMB_VFS_FSTAT(fsp,fsp->fd,psbuf)==-1)) { unlock_share_entry_fsp(fsp); fd_close(conn,fsp); file_free(fsp); |