summaryrefslogtreecommitdiff
path: root/source3/smbd
AgeCommit message (Collapse)AuthorFilesLines
2008-12-23Fix more asprintf warnings and some error path errors.Jeremy Allison2-5/+7
Jeremy.
2008-12-23s3: Fix stream marshalling to return the correct streaminfo statusTim Prouty1-10/+1
When there are enough streams on a file to fill up the max_data_count when responding to a trans2 streaminfo, samba is returning NT_STATUS_BUFFER_TOO_SMALL. Windows handles this by returning NT_STATUS_BUFFER_OVERFLOW while still sending as much of the data that it can fit into the buffer. When the windows client sees BUFFER_OVERFLOW, it retries the streaminfo with a larger buffer (2x). The windows client starts at 2K and will continue increasing the buffer size by two until it reaches 64K. If the streams don't fit in 64K the windows client seems to give up. This patch fixes marshall_stream_info to overfill the buffer by 1 stream so that send_trans2_replies can properly detect the overflow and return the correct status.
2008-12-19Fix bug #5986 - Editing a stream is broken (rename problems).Jeremy Allison2-11/+14
Jeremy.
2008-12-19Remove the direct inbuf reference from construct_reply_common()Volker Lendecke1-8/+11
2008-12-18Fix bug #5980 - Race condition when granting level2 oplocks can cause break ↵Jeremy Allison1-4/+27
notify to be missed. Jeremy.
2008-12-17Fix bug #5979 - Level 2 oplocks being granted improperly,Jeremy Allison2-70/+114
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-12s3 sesssetup.c: Add missing line break to debug message.root1-1/+1
Karolin
2008-12-10Pass the get_real_filename operation through the VFSVolker Lendecke1-4/+1
This is done to help file systems that can tell us about the real upper/lower case combination given a case-insensitive file name. The sample I will soon push is the gpfs module (recent gpfs has a get_real_filename function), others might have a similar function to help alleviate the 1million files in a single directory problem. Jeremy, please comment! Thanks, Volker
2008-12-10Change get_real_filename() to unix syscall conventions, make it non-staticVolker Lendecke1-13/+14
It sets errno, so it might as well return 0/-1.
2008-12-10Apply some constVolker Lendecke1-2/+2
2008-12-10Rename "scan_directory" to "get_real_filename"Volker Lendecke1-12/+12
2008-12-09s3: [3/3]: Fix a delete on close divergence from windows and the associated ↵Tim Prouty2-5/+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: Call fd_close from close_directoryTim Prouty1-0/+7
Some implementations of SMB_VFS_CREATE_FILE implementations actually keep an fd open for directories just as files. In this case it is necessary to call fd_close when closing directories. This is safe because fd_close is a no-op when fd == -1, which is true for directory opens originating from open.c (the default SMB_VFS_CREATE_FILE implementation).
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 Prouty2-17/+17
This allows vfs modules that implement SMB_VFS_CREATE_FILE to access some of the useful utility functions.
2008-12-07Replace some pointless variables in reply_open_pipe_and_X by commentsVolker Lendecke1-12/+6
2008-12-05Fix bug #5944 - nmbd does not boot if socket adress = "" is defined in smb.confYasuma Takeda1-3/+2
2008-12-04Fix bug #5937 - filenames with "*" char hide other filesJeremy Allison1-6/+4
Jeremy.
2008-12-04Fix bug #1254 - write list not working under share-level securityJeremy Allison2-37/+48
A somewhat more elegant fix than I could use for 3.2.x or 3.0.x. Turns out the only part of check_user_ok() that needs to change for share level security is the VUID cache pieces, so I can just always use check_user_ok() for all lp_security() cases. Jeremy
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 Prouty5-26/+26
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 Prouty5-143/+276
SMB_VFS_CREATE_FILE
2008-12-03s3: Modify direct callers of create_file_unix_path to call SMB_VFS_CREATE_FILETim Prouty2-18/+46
2008-12-03s3: Add new "is_dos_path" argument to SMB_VFS_CREATE_FILETim Prouty4-3/+10
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 Prouty4-89/+119
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: give the correct error when trying to replace a streamStefan Metzmacher1-0/+6
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: write times should be set on the base file instead of the stream nameStefan Metzmacher1-1/+9
metze
2008-12-01s3:smbd: return DELETE_PENDING on path based operations on streams, when the ↵Stefan Metzmacher1-0/+40
main file was deleted. metze
2008-12-01s3:smbd: construct the correct newname for stream renamesStefan Metzmacher1-16/+32
The Windows Explorer creates temporary streams and renames them later via SFILEINFO_RENAME_INFO. The newname comes in as ":Stream:$DATA". 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-12-01s3:smbd: correctly verify stream names to pass RAW-STREAMSStefan Metzmacher1-1/+35
metze
2008-12-01s3:smbd: '|' isn't allowed in windows filenamesStefan Metzmacher1-1/+1
metze
2008-12-01Fix a debug message, append the correct \nVolker Lendecke1-1/+1
2008-11-30Make nt4_compatible_acls() non-static for use by VFS ACL modules.Steven Danneman1-1/+1
2008-11-30Set PRESENT flag when returning NULL [SD]ACL like Windows does.Steven Danneman1-1/+9
This could also be handled inside each ACL VFS module, by setting the PRESENT flag when a NULL [SD]ACL is created.
2008-11-28Remove "conn" parameter from np_open, smb_request contains itVolker Lendecke2-2/+2
2008-11-28Remove inbuf references from the trans2ioctl codeVolker Lendecke1-4/+4
2008-11-28Consolidate the buffer checks for the reply_trans style functionsVolker Lendecke3-169/+54
This is the one where I found the problem that led to 3.2.5. So if there is one checkin in the last year that I would like others to review and *understand*, it is this one :-) Volker
2008-11-28Remove the variable "size" from reply_nttransVolker Lendecke1-10/+13
This converts the range checks for the setup[] array to rely on req->wct being set correctly in init_smb_request. As that already verifies the vwv array to be in the range of the smb_request inbuf, we don't have to do overflow checks here anymore. Jeremy, please check thoroughly! :-) Thanks, Volker
2008-11-28Remove the variable "size" from reply_transVolker Lendecke1-12/+16
This converts the range checks for the setup[] array to rely on req->wct being set correctly in init_smb_request. As that already verifies the vwv array to be in the range of the smb_request inbuf, we don't have to do overflow checks here anymore. Jeremy, please check thoroughly! :-) Thanks, Volker
2008-11-28Remove an unused variableVolker Lendecke1-2/+0
2008-11-28Remove two direct inbuf references from reply_sesssetup_and_X_spnego()Volker Lendecke1-2/+2