summaryrefslogtreecommitdiff
path: root/source3/smbd/filename.c
AgeCommit message (Collapse)AuthorFilesLines
2002-10-11Turns out with Win9x, we could occasionally return from unix_convert() givenJeremy Allison1-0/+12
a mangled name without a valid stat struct if the file existed. This would then cause open_file_shared1() to erroneously think the file open was new, thus not check for oplock break, thus causing a spurious EAGAIN reply to the open on a file we already had kernel oplocked.... (phew - that was fun to track down :-). Jeremy. (This used to be commit e23210e4732163e7f005b320235c20c814b41972)
2002-09-17disable stat cache when case sensitiveAndrew Tridgell1-1/+1
(This used to be commit 3401c3616b3dcb99053f89d88f8e351c986c9096)
2002-08-11Make 'remote_machine' private to lib/substitute.c, and fix all the user to useAndrew Bartlett1-1/+0
the new accessor functions. Andrew Bartlett (This used to be commit f393de2310e997d05674eb7f1268655373e03647)
2002-06-13Veto files fix.Jeremy Allison1-275/+273
Jeremy. (This used to be commit 1712a7b34a73ad89965961c0db4dd198d6b257c6)
2002-06-13Merge in mangle fixes from 2.2.Jeremy Allison1-88/+90
Jeremy. (This used to be commit 5e2571f424a40df4d67fe279517a9b21184b78e1)
2002-05-14Removed lp_strip_dot code - ensured that mangling code treats names endingJeremy Allison1-28/+6
in '.' as invalid long filenames (special treatment for '.' and '..' which are valid - yes Andrew I did this without strlen :-) :-). Jeremy. (This used to be commit 3180d8ba4ace9417033039d61d04c255da6f6a01)
2002-04-11This split the mangling code up to allow for the possibility of multipleAndrew Tridgell1-31/+15
mangling implementation, selectable using "mangling method = " in smb.conf It also tidies the interface a little, although it is still nasty. (This used to be commit be23d87a178e7d0691e7d942adf89bb3d2d533c2)
2002-04-08Reintroduce the 2.2 name mangling code, until we get are more flexible solution.Andrew Bartlett1-1/+14
Even for a hash/cache setup, this code needs some more work, in particular it needs to use mangle_get_prefix() etc and to move to unicode internals. Andrew Bartlett (This used to be commit ad8aa470575c39fcbc7f1440bf1081d7ea31c0aa)
2002-01-30Removed version number from file header.Tim Potter1-2/+1
Changed "SMB/Netbios" to "SMB/CIFS" in file header. (This used to be commit 6a58c9bd06d0d7502a24bf5ce5a2faf0a146edfa)
2001-12-18Fixed the bug with descending into mangled directories.Jeremy Allison1-5/+8
The problem is that name_map_mangle can *change* the length of a patchname. Ensure that all the character pointer messing about can cope with changing sizes of components. This code is too ugly to live..... This also needs *lots* of testing. Jeremy. (This used to be commit 9f2b6a07429da5dec59e562fa5489b8079978677)
2001-10-29change some more functions to the new mangle interface.Simo Sorce1-9/+11
(This used to be commit 06a7c28ea1be81c4a53f9a5b885c37fdde31f75c)
2001-10-02Removed 'extern int DEBUGLEVEL' as it is now in the smb.h header.Tim Potter1-1/+0
(This used to be commit 2d0922b0eabfdc0aaf1d0797482fef47ed7fde8e)
2001-07-25- don't try to print pointersAndrew Tridgell1-11/+0
- removed some unused mangling code (This used to be commit 36af1c0dc41f72ec6a5c671fd6b4f6eb2590b8b4)
2001-07-04strchr and strrchr are macros when compiling with optimisation in gcc, so we ↵Andrew Tridgell1-3/+3
can't redefine them. damn. (This used to be commit c41fc06376d1a2b83690612304e85010b5e5f3cf)
2001-07-04The big character set handling changeover!Andrew Tridgell1-1/+1
This commit gets rid of all our old codepage handling and replaces it with iconv. All internal strings in Samba are now in "unix" charset, which may be multi-byte. See internals.doc and my posting to samba-technical for a more complete explanation. (This used to be commit debb471267960e56005a741817ebd227ecfc512a)
2001-03-11Merge of new 2.2 code into HEAD (Gerald I hate you :-) :-). Allows new SAMRJeremy Allison1-5/+0
RPC code to merge with new passdb code. Currently rpcclient doesn't compile. I'm working on it... Jeremy. (This used to be commit 0be41d5158ea4e645e93e8cd30617c038416e549)
2000-12-12Sorry Gerald, I think the original code was better (plus safer as I'm sureJeremy Allison1-7/+10
it's working :-). Jeremy. (This used to be commit e18c104ee35d00dcbe2e73e6c9699300a3947364)
2000-12-11subtle bug where files which missed the stat_cache but were addedGerald Carter1-10/+7
to the cache during the look returned a blank stat struct. Made weird occurrences such as... $ smbclient //pogo/print$ smb:\ > cd w32x86 ERROR: Invalid path smb:\ > cd w32x86 smb:\w32x86\ > (This used to be commit 8938dc183112b039c21a5a0beadb60068a8c5b00)
2000-12-08Fixed *very* subtle statcache bug where invalid stat state could beJeremy Allison1-1/+2
being used if last component lookup failed, but was found in the directory scan. Jeremy. (This used to be commit 7055fa0bc43f6e2b3f04b8901fccea80d59bf490)
2000-10-19Ok - this is a big patch - and it may break smbd a bit (althoughJeremy Allison1-40/+43
I hope not). If you encounter strange file-serving behavior after this patch then back it out. I analysed our stat() usage and realised we were doing approx. 3 stat calls per open, and 2 per getattr/setattr. This patch should fix all that. It causes the stat struct returned from unix_convert() (which now *must* be passed a valid SMB_STRUCT_STAT pointer) to be passed through into the open code. This should prevent the multiple stats that were being done so as not to violate layer encapsulation in the API's. Herb - if you could run a NetBench test with this code and do a padc/par syscall test and also run with the current 2.2.0 code and test the padc/par syscalls I'd appreciate it - you should find the number of stat calls reduced - not sure by how much. The patch depends on unix_convert() actually finding the file and returning a stat struct, or returning a zero'd out stat struct if the file didn't exist. I believe we can guarentee this to be the case - I just wasn't confident enough to make this an assertion before. Ok ok - I did write this whilst at the Miami conference..... sometimes you get a little free time at these things :-). Jeremy. (This used to be commit 66a5c05ec46b641224fbe01b30bd7e83571a2a1b)
2000-10-06Restructuring of vfs layer to include a "this" pointer - can be an fsp orJeremy Allison1-3/+3
a conn struct depending on the call. We need this to have a clean NT ACL call interface. This will break any existing VFS libraries (that's why this is pre-release code). Andrew gets credit for this one :-) :-). In addition - added Herb's WITH_PROFILE changes - Herb - please examine the changes I've made to the smbd/reply.c code you added. The original code was very ugly and I have replaced it with a START_PROFILE(x)/END_PROFILE(x) pair using the preprocessor. Please check this compiles ok with the --with-profile switch. Jeremy. (This used to be commit b07611f8159b0b3f42e7e02611be9f4d56de96f5)
2000-09-27Restructuring of the code to remove dos_ChDir/dos_GetWd and re-vector themJeremy Allison1-1/+1
through the VFS. All file access/directory access code in smbd should now go via the vfs. Added vfs_chown/vfs_chmod calls. Still looking at vfs_get_nt_acl() vfs_set_nt_acl() call API design. Jeremy. (This used to be commit f96625ec124adb6e110dc54632e006b3620a962b)
2000-05-10more merging voodooAndrew Tridgell1-0/+4
this adds "#define OLD_NTDOMAIN 1" in lots of places. Don't panic - this isn't permanent, it should go after another few merge steps have been done (This used to be commit 92109d7b3c06f240452d39f669ecb8c9c86ab610)
2000-04-30- removed all our old wildcard matching code and replaced it with aAndrew Tridgell1-257/+2
call to ms_fnmatch(). This also removes all the Win9X semantics stuff and a bunch of other associated cruft. - moved the stat cache code into statcache.c - fixed the uint16 alignment requirements of ascii_to_unistr() and unistr_to_ascii() - trans2 SMB_FIND_FILE_BOTH_DIRECTORY_INFO returns the short name as unicode always (at least thats what NT4 does) - fixed some errors in the in-memory tdb code. Still ugly, but doesn't crash as much (This used to be commit 03e9cea004bbba72161a5323cf3b4556c94aed8e)
2000-04-10the bulk of the changes to get rid of fd_ptr and move print openAndrew Tridgell1-0/+6
handling to printing/printing.c most of this was just replacing things like fsp->fd_ptr->fd with fsp->fd the changes in open.c are quite dramatic. Most of it is removing all the functions that handled the fd multiplexing (This used to be commit d1827a3648009fd0a0d165055015d9aeda7a1037)
2000-02-07Fix some more compile warnings.Tim Potter1-1/+2
(This used to be commit 507624dbc0a1a9e1df72a6b8de45038e86a9e5b1)
2000-02-04Fix some compile warnings.Tim Potter1-1/+1
(This used to be commit ccbd936211d4bfc8687cef78405ae58127289d13)
2000-02-03Put back lots of missing calls to dos_to_unix(). Thanks toTim Potter1-2/+2
aono@cc.osaka-kyoiku.ac.jp (Tomoki AONO) (This used to be commit 176c405d2702a4245561ff56c8eac3c754a0dea3)
2000-02-03Mega-VFS merge. Yeah baby!Tim Potter1-6/+8
Synopsis: change every disk access function to work through a vfs_ops structure contained in the connection_struct. (This used to be commit 3aad500c0fb61232ed3431ff4b743b5d18ec852f)
2000-01-26Added hash-based stat cache code from Ying Chen.Jeremy Allison1-81/+92
Jeremy. (This used to be commit b62a1bd6328f5894ae1a2fef3ef6fc66304ade52)
1999-12-13first pass at updating head branch to be to be the same as the SAMBA_2_0 branchAndrew Tridgell1-49/+19
(This used to be commit 453a822a76780063dff23526c35408866d0c0154)
1999-07-15more dfs stuff. this looks like it's going to be more appropriate to useLuke Leighton1-3/+33
the vfs tables. at the moment, i replaced all calls to unix_convert() with unix_dfs_convert(). this does the job, but it's not very nice. (This used to be commit 00d4aebce9f268a737ef9df9bdbe59f8fe831979)
1999-04-05Use VFS I/O for stat_cache_lookup()Tim Potter1-3/+5
(This used to be commit 5ece1fcffbc5a5062c02edf6f2ecb405c2a2f43e)
1999-04-04Use VFS operations for file I/O.Tim Potter1-3/+4
(This used to be commit cfddbdb62485256a947a30e04c753200451cbe1c)
1998-11-21formatting changeAndrew Tridgell1-1/+1
(This used to be commit 94fc7fe3afa1dc5547050248738eb697c1eeef59)
1998-10-09Added code to convert empty file names to "." so we avoidRichard Sharpe1-0/+12
searching the cache, but only if we are not on a print share. This code is known to work on at least one site! (This used to be commit a2898af463132147cbe19b18585c793960cb39ee)
1998-10-09Add a DEBUG to unix_convertRichard Sharpe1-0/+2
(This used to be commit ac61a102473c7f23938368f9bfea494cd56344a1)
1998-09-28Changes to test in configure if capabilities are enabled on a system.Jeremy Allison1-13/+11
Changes to get Samba to compile cleanly with the IRIX compiler with the options : -fullwarn -woff 1209,1174 (the -woff options are to turn off warnings about unused function parameters and controlling loop expressions being constants). Split prototype generation as we hit a limit in IRIX nawk. Removed "." code in smbd/filename.c (yet again :-). Jeremy. (This used to be commit e0567433bd72aec17bf5a54cc292701095d25f09)
1998-09-26Fixed the problem with reply_getatr() being passed a "" name in reply_getatr,Jeremy Allison1-3/+0
replaced the paranoid code in smbd/filename.c that replaces a "" with a ".". I am starting to think this code may well be needed. Jeremy. (This used to be commit bdc3d9f52fbded4b1483af8be0059decfd4bad34)
1998-09-25I've disabled the conversion of null filenames to "." until we solveAndrew Tridgell1-0/+3
the win95 printing problem. I suspect it is a smbgetatr() problem with a null name (which requires special behaviour). This is an interim solution. (This used to be commit 0a69e091a2ec75bce89760d69ea1488941108740)
1998-09-19Small bit of paranioa. Ensure that if the incoming name toJeremy Allison1-2/+14
unix_convert() was a single '\' (the base directory of the service) that it gets translated to a '.', not a '\0'. Jeremy. (This used to be commit f74f39f45fa55c1768d6622a52c494328f22f50b)
1998-09-10Improved stat cache code by uppercasing any search name that gets added toJeremy Allison1-17/+15
it if we're in case insensitive mode, and then doing a memcmp rather than a StrnCaseCmp (which is *horribly* slow) on every lookup. Fixed bug with refusing NT SMB's (use *brackets* where needed :-). Jeremy. (This used to be commit 02b3fddce33a58a4db2102670b502fc0c6f45fab)
1998-09-08Added back groupname map stuff removed by Andrew's "slash 'n' burn"Jeremy Allison1-0/+14
tactics :-). Protected by #ifdef until used. Fixed bug in fd_attempt_close() where a pointer to potentially free'd memory was returned. I hate that. Added "blocking locks" as a per-share option for performance testing. Changed is_mangled() so it will return true if called with a pathname and any component of the pathname was mangled (it was already attempting to do this, but not checking for a '/' as end-of-mangle). This should be a better fix for the wierd stat cache bug Andrew identified. Jeremy. (This used to be commit 0de01f45980c7bc261248a9cead972a8d8cbd594)
1998-09-06add a "stat cache" boolean smb.conf option. (defaults to on)Andrew Tridgell1-2/+10
I think we need this so we can rule out stat cache bugs when dealing with bug reports. If we ask a user to disable the stat cache and the problem persists then we know it isn't a stat cache bug. The stat cache code is sufficiently complicated that it can be pretty hard to tell if it is causing problems or not. (This used to be commit c83f3775cd8a7aad13571926cdd5949a07538771)
1998-09-05fixed a stat cache bug (the one found by Matthew Geier).Andrew Tridgell1-1/+5
The fix I used is a very conservative fix. I'll leave it up to Jeremy to put in a better fix. The problem was the detection of mangled names. (This used to be commit c96b5fde5ae12bd0d4d6bcff095cf090738c92a4)
1998-09-05some cleanups to use ZERO_STRUCT() and friendsAndrew Tridgell1-2/+3
(This used to be commit 7b154dc4313324dfad6cf0117b8ce246bf12bf16)
1998-09-05tridge the destroyer returns!Andrew Tridgell1-5/+5
prompted by the interpret_security() dead code that Jean-Francois pointed out I added a make target "finddead" that finds potentially dead (ie. unused) code. It spat out 304 function names ... I went through these are deleted many of them, making others static (finddead also reports functions that are used only in the local file). in doing this I have almost certainly deleted some useful code. I may have even prevented compilation with some compile options. I apologise. I decided it was better to get rid of this code now and add back the one or two functions that are needed than to keep all this baggage. So, if I have done a bit too much "destroying" then let me know. Keep the swearing to a minimum :) One bit I didn't do is the ubibt code. Chris, can you look at that? Heaps of unused functions there. Can they be made static? (This used to be commit 2204475c87f3024ea8fd1fbd7385b2def617a46f)
1998-09-03fixed a bug in the name mangling code. It implicitly assumed thatAndrew Tridgell1-1/+1
mangling a name can't increase it's size which isn't true. (imagine a file called "L B" which mangles to "LB~XX") The symptoms were that users couldn't run batch files from short directory names that contained non 8.3 characters (such as spaces). (This used to be commit c319d8ea3f8b42bb3a8e501642971ed0bdb21583)
1998-09-01More abstraction of file system data types, to move to a 64Jeremy Allison1-9/+9
bit file interface for the NT SMB's. Created a new define, SMB_STRUCT_STAT that currently is defined to be struct stat - this wil change to a user defined type containing 64 bit info when the correct wrappers are written for 64 bit stat(), fstat() and lstat() calls. Also changed all sys_xxxx() calls that were previously just wrappers to the same call prefixed by a dos_to_unix() call into dos_xxxx() calls. This makes it explicit when a pathname translation is being done, and when it is not. Now, all sys_xxx() calls are meant to be wrappers to mask OS differences, and not silently converting filenames on the fly. Jeremy. (This used to be commit 28aa182dbffaa4ffd86047e608400de4b26e80eb)
1998-08-28This checking fixes the statcache bug that stopped NetBench from runningJeremy Allison1-6/+14
correctly. Added new parameter "stat cache size" - set to 50 by default. I now declare the statcache code officially "open" for business :-). It gets a hit rate of 97% with a NetBench run and seems to make using a case insensitive run as efficient as a case sensitive run. Also tidied up our sys_select usage - added a maxfd parameter and also added an implementation of select in terms of poll(), for systems where poll() is much faster. This is disabled by default. Jeremy. (This used to be commit 779b924ec1f6c81ff578d22295b20fece698d1fc)