summaryrefslogtreecommitdiff
path: root/source3/smbd/open.c
AgeCommit message (Collapse)AuthorFilesLines
2009-02-04Fix bug #Bug 6090 renaming or deleting a "not matching/resolving" symlink is ↵Jeremy Allison1-20/+34
failing. Reported by Kukks. Make sure we correctly use LSTAT in all cases where POSIX pathnames are being used. This matters when dealing with symlinks pointing to invalid paths being renamed or deleted not all deletes and renames are done via an nt_create open. Jeremy.
2009-02-02Fix bug #6082 - smbd_gpfs_getacl failed: Windows client can´t rename or ↵Jeremy Allison1-10/+46
delete file This fixes the generic rename/delete problem for 3.3.0 and above. Fixed slightly differently to discussions, user viewable modified ACLs are not a good idea :-). Jeremy.
2009-01-09s3: Fix open path to delete streams depending on the create dispositionTim Prouty1-0/+14
The new create disposition test in smbtorture RAW-STREAMS verifies this fix.
2009-01-08s3:smbd: move all globals and static variables in globals.[ch]Stefan Metzmacher1-2/+1
The goal is to move all this variables into a big context structure. metze
2008-12-31Fix a "nested extern" warningVolker Lendecke1-1/+1
2008-12-31Rename parent_dirname_talloc() to parent_dirname()Volker Lendecke1-4/+2
2008-12-31Fix an ancient uninitialized variable readVolker Lendecke1-1/+1
The callers of open_file_ntcreate expect *psbuf to be filled correctly
2008-12-17Fix bug #5979 - Level 2 oplocks being granted improperly,Jeremy Allison1-65/+96
Jeremy.
2008-12-13Fix a valgrind error in get_relative_fid_filenameVolker Lendecke1-1/+1
It doesn't really make sense to check the length of a not-yet-allocated string :-) Volker
2008-12-12Fix error code when smbclient puts a file over an existing directoryVolker Lendecke1-1/+1
Windows returns NT_STATUS_FILE_IS_A_DIRECTORY, as does Samba 3.0. 3.2 and following returned NT_STATUS_INVALID_PARAMETER which is wrong. Before I converted reply_open_and_X to create_file() we called open_file_ntcreate directly. Passing through open&X for a filename that exists as a directory ends up in open_directory after having tried open_file_ntcreate. Some check in there returns NT_STATUS_INVALID_PARAMETER. With this additional FILE_NON_DIRECTORY_FILE flag we get the correct error message back from create_file_unixpath before trying open_directory(). Survives make test, but as this also touches the other open variants I would like others to review this. Volker
2008-12-09s3: [3/3]: Fix a delete on close divergence from windows and the associated ↵Tim Prouty1-3/+2
torture test This third patch cleans up by removing all of the code that is made obsolete by the first patch. It should cause no functional changes.
2008-12-09s3: [1/3] Fix a delete on close divergence from windows and the associated ↵Tim Prouty1-4/+2
torture test smbtorture4's BASE-DELETE:deltest17 was failing against win2k8, win2k3, and winXPsp2 but passing against samba. deltest17 does the following: 1. open file -> file is created 2. closes file 3. open file with DOC -> fnum1 4. check that DOC is not reported as being set from fnum1 5. opens file again Read Only -> fnum2 6. check that DOC is not reported as being set from either file handle 7. close fnum1 (the file handle that requested DOC to be set) 8. check if DOC is reported as being set from fnum2 * This is where windows and samba begin to diverge. Windows reports that the DOC bit is set, while samba reports that it is not set. 9. close fnum2 (the last remaining open handle for the file) 10.See if the file has been deleted. * On samba the file still exists. On windows the file was deleted. The way open_file_ntcreate is written now, if an open has the DOC bit set on the wire, DOC (fsp->initial_delete_on_close) is not set unless: a. the open creates the file, or b. there is an open file handle with a share_entry in the struct lck that has the SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE bit set (let's call it SM_AIDOC). My understanding of SM_AIDOC is that it was added to differentiate between DOC being set on an open that creates a file vs an open that opens an existing. As described in step 8/10 above, it appears that windows does not make this differentiation. To resolve this issue there are three patches. This first patch is a simple proof of concept change that is sufficient to fix the bug. It removes the differentiation in open_file_ntcreate, and updates deltest17 to allow it to pass against win2k3/xp. This makes open_file_ntcreate more closely match the semantics in open_directory and rename_internals_fsp. This change also does not break any other tests in BASE-DELETE or "make test". Specifically test deltest20b which verifies the CIFSFS rename DOC semantics still passes :).
2008-12-09s3: Refactor calculating path from relative_fid into a separate functionTim Prouty1-78/+96
2008-12-09s3: Refactor getting sec_info from a security_descriptor into separate functionTim Prouty1-13/+2
2008-12-09s3: Make a few open utility functions non-staticTim Prouty1-16/+16
This allows vfs modules that implement SMB_VFS_CREATE_FILE to access some of the useful utility functions.
2008-12-03s3: Fix FILE_FLAG_POSIX_SEMANTICS handling underneath SMB_VFS_CREATE_FILETim Prouty1-2/+2
2008-12-03s3: Change SMB_VFS_CREATE_FILE to take a create_file_flags argumentTim Prouty1-6/+6
This replaces the is_dos_path bool with a more future-proof argument. The next step is to plumb INTERNAL_OPEN_ONLY through this flag instead of overridding the oplock_request.
2008-12-03s3: Simplify the create_file_unix_path->open_file_ntcreate pathTim Prouty1-93/+38
Also removed open_file_ntcreate/open_file from proto.h so they can no longer be called directly.
2008-12-03s3: Modify direct caller of open_file to call SMB_VFS_CREATE_FILETim Prouty1-4/+19
2008-12-03s3: Modify direct callers of open_file_ntcreate and open_directory to call ↵Tim Prouty1-8/+18
SMB_VFS_CREATE_FILE
2008-12-03s3: Modify direct callers of create_file_unix_path to call SMB_VFS_CREATE_FILETim Prouty1-16/+42
2008-12-03s3: Add new "is_dos_path" argument to SMB_VFS_CREATE_FILETim Prouty1-3/+4
Now unix paths can be differentiated from windows paths so the underlying create_file implementations can convert paths correctly.
2008-12-03s3: Add SMB_VFS_CREATE_FILE to the vfs layerTim Prouty1-17/+17
Modify all callers of create_file to go through SMB_VFS_CREATE_FILE
2008-12-01s3:smbd: close the low level fd of the base_fsp, if the file was createdStefan Metzmacher1-0/+2
metze
2008-12-01s3:smbd: only try and fallback to open a directory if it's not a stream openStefan Metzmacher1-0/+7
metze
2008-12-01s3:smbd: wildcard characters are allowed in stream namesStefan Metzmacher1-1/+11
We only check the filename of the basefile now. metze
2008-11-21Rever 83ff6979f504d50caf725ee62549604630b69be7 - "Fix the logic bug that ↵Jeremy Allison1-7/+1
caused us to run into kernel oplocks on an open for a stream inside a file with stream_xattr module. On opening the base_fsp we must break existing oplocks." as it broke make test. Jeremy.
2008-11-21Fix the logic bug that caused us to run into kernel oplocks on an open for a ↵Jeremy Allison1-1/+7
stream inside a file with stream_xattr module. On opening the base_fsp we must break existing oplocks. Jeremy.
2008-11-21Second part of the fix for bug #5903 - vfs_streams_xattr breaks contents of ↵Jeremy Allison1-15/+46
the file (also fix a bad merge of the previous patch from 3.3). Jeremy.
2008-11-21First part of fix for bug #5903 - vfs_streams_xattr breaks contents of the file.Jeremy Allison1-61/+82
Restructures parts of open code so that fsp must be allocated before calling open_file_ntcreate(_internal). Also fix up file ref-counting inside files.c. Jeremy.
2008-11-06Don't call FSET_NT_ACL on file create if there's no SD to set. Leave the ↵Jeremy Allison1-1/+6
default ACL in place. Jeremy.
2008-11-04Pass all of RAW-ACLS except for inheritence. Working on that next.Jeremy Allison1-2/+79
Jeremy.
2008-11-03Pass the directory versions of the RAW-ACL (still not inheritance). Refactor ↵Jeremy Allison1-43/+83
some common code between open_file_ntcreate() and open_directory(). Jeremy.
2008-11-03Pass all the non-inherited S4 RAW-ACL tests.Jeremy Allison1-14/+4
Jeremy.
2008-10-31Get closer to passing S4 RAW-ACLs.Jeremy Allison1-5/+42
Jeremy.
2008-10-30Start moving us closer to passing S4 RAW-ACL test using the vfs_acl_xattr ↵Jeremy Allison1-0/+9
module. Inheritance fails at the moment though. Jeremy.
2008-10-14Use {u,}int64_t instead of SMB_BIG_{U,}INT.Jelmer Vernooij1-3/+3
2008-10-13Pass struct smb_request to file_freeVolker Lendecke1-26/+26
on the way to get rid of chain_fsp
2008-10-13Pass struct smb_request to file_newVolker Lendecke1-9/+11
Goal is to remove the chain_fsp global variable
2008-10-13Pass struct smb_request to file_fspVolker Lendecke1-1/+1
The goal is to get rid of the chain_fsp global variable
2008-10-08For the vfs_acl_xattr.c module, make sure we map GENERIC file and directory bitsJeremy Allison1-0/+4
to specific bits every time a security descriptor is set. The S4 torture suite proves that generic bits are not returned when querying an ACL set using them (ie. only the specific bits are stored on disk). Jeremy.
2008-09-26Fix bug #5797 - Moving readonly files fails. Reported by infomail@lordb.de.Jeremy Allison1-3/+1
We don't need to deny a DELETE open on a readonly file (I'm also adding a s4 torture test for this), the set_file_disposition call will return NT_STATUS_CANNOT_DELETE if the delete-on-close bit is set on a readonly file (and we already do this). Jeremy.
2008-09-15Fix bug 5761 "open of mangled directory name results in 'is a stream name'"Jeremy Allison1-3/+7
reported by Regan Heath <Regan.Heath@BridgeHeadSoftware.com>. Jeremy.
2008-08-20smbd: fix the handling of create_options to pass RAW-OPENStefan Metzmacher1-0/+5
Some of the bits generate INVALID_PARAMETER and some bits are ignored when they come from a client, that's why we need to use bits from the ignored range for our internal usage. metze (This used to be commit 7b4c8a4e39f310eb450918fa841b0ea1b4af19f7)
2008-07-24If we're not allowing streams on this conn ptr,Jeremy Allison1-0/+5
then don't allow create_file() to call down to create_file_unixpath() with a stream name. Jeremy. (This used to be commit 167d611b525db6d103a7f83fd5a19792be4e7745)
2008-06-26Remove current_user reference from printfsp.cVolker Lendecke1-1/+1
(This used to be commit 510f45d01a19ce1c226755ac42a328241098b2e0)
2008-06-19Wrap the unix token info in a unix_user_token in auth_serversupplied_infoVolker Lendecke1-3/+4
No functional change, this is a preparation for more current_user ref removal (This used to be commit dcaedf345e62ab74ea87f0a3fa1e3199c75c5445)
2008-06-15Remove the current_user references from open.cVolker Lendecke1-6/+4
current_user_info was "only" used in a debug msg, and current_user.ut.uid is also available via conn->server_info (This used to be commit d0386914ff0f7b0f1edc3302fdc6a25f211712fa)
2008-06-15Remove the current_user reference from fake_file.cVolker Lendecke1-1/+2
The current vuid is not only available there, it is also in the current smb_request structure. (This used to be commit c8fd5eef32a86888c7a28317f0fdf717a26b7d4c)
2008-05-10Remove "user" from connection_structVolker Lendecke1-2/+3
(This used to be commit 368454a27cb53a408ec416cbf37235b304592fb5)