1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-14 19:24:43 +03:00

55 Commits

Author SHA1 Message Date
Andrew Bartlett
ad0d6509a7 Merge from HEAD:
- Make ReadDirName return a const char*.

 - Consequential changes from that

 - mark our fstring/pstring assumptions in function prototypes

Andrew Bartlett
(This used to be commit 10b53d7c6fd77f23433dd2ef12bb14b227147a48)
2003-03-17 22:56:13 +00:00
Andrew Tridgell
50edc1a831 merge from head
(This used to be commit fd3216dbcbaec7d64dd24fe2af6c4156935c47e9)
2003-02-07 04:11:36 +00:00
Andrew Bartlett
634c54310c Merge from HEAD - make Samba compile with -Wwrite-strings without additional
warnings.  (Adds a lot of const).

Andrew Bartlett
(This used to be commit 3a7458f9472432ef12c43008414925fd1ce8ea0c)
2003-01-03 08:28:12 +00:00
Jeremy Allison
d0a99a261d Turns out with Win9x, we could occasionally return from unix_convert() given
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 af80b033a5374da9163e3484f7d8707813490597)
2002-10-11 01:19:00 +00:00
Gerald Carter
a834a73e34 sync'ing up for 3.0alpha20 release
(This used to be commit 65e7b5273bb58802bf0c389b77f7fcae0a1f6139)
2002-09-25 15:19:00 +00:00
Jelmer Vernooij
127e77e6e3 Sync 3.0 branch with head
(This used to be commit 42615b945e2e48e53a21ea47f2e45407913a6a1e)
2002-08-17 15:27:10 +00:00
Andrew Tridgell
e90b652848 updated the 3.0 branch from the head branch - ready for alpha18
(This used to be commit 03ac082dcb375b6f3ca3d810a6a6367542bc23ce)
2002-07-15 10:35:28 +00:00
Andrew Tridgell
9cd0306baa This split the mangling code up to allow for the possibility of multiple
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-11 02:20:56 +00:00
Andrew Bartlett
c21ff8f762 Reintroduce the 2.2 name mangling code, until we get are more flexible solution.
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-04-08 01:58:44 +00:00
Tim Potter
cd68afe312 Removed version number from file header.
Changed "SMB/Netbios" to "SMB/CIFS" in file header.
(This used to be commit 6a58c9bd06d0d7502a24bf5ce5a2faf0a146edfa)
2002-01-30 06:08:46 +00:00
Jeremy Allison
0558e2c402 Fixed the bug with descending into mangled directories.
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-12-18 01:26:54 +00:00
Simo Sorce
95aa4c6bbe change some more functions to the new mangle interface.
(This used to be commit 06a7c28ea1be81c4a53f9a5b885c37fdde31f75c)
2001-10-29 13:19:22 +00:00
Tim Potter
dc1fc3ee8e Removed 'extern int DEBUGLEVEL' as it is now in the smb.h header.
(This used to be commit 2d0922b0eabfdc0aaf1d0797482fef47ed7fde8e)
2001-10-02 04:29:50 +00:00
Andrew Tridgell
9de7c5e521 - don't try to print pointers
- removed some unused mangling code
(This used to be commit 36af1c0dc41f72ec6a5c671fd6b4f6eb2590b8b4)
2001-07-25 06:29:26 +00:00
Andrew Tridgell
527e824293 strchr and strrchr are macros when compiling with optimisation in gcc, so we can't redefine them. damn.
(This used to be commit c41fc06376d1a2b83690612304e85010b5e5f3cf)
2001-07-04 07:36:09 +00:00
Andrew Tridgell
87fbb7092b The big character set handling changeover!
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-07-04 07:15:53 +00:00
Jeremy Allison
da3053048c Merge of new 2.2 code into HEAD (Gerald I hate you :-) :-). Allows new SAMR
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)
2001-03-11 00:32:10 +00:00
Jeremy Allison
4c639caa1f Sorry Gerald, I think the original code was better (plus safer as I'm sure
it's working :-).
Jeremy.
(This used to be commit e18c104ee35d00dcbe2e73e6c9699300a3947364)
2000-12-12 00:11:34 +00:00
Gerald Carter
93e98d0281 subtle bug where files which missed the stat_cache but were added
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-11 22:51:57 +00:00
Jeremy Allison
269acfe1d2 Fixed *very* subtle statcache bug where invalid stat state could be
being used if last component lookup failed, but was found in the directory
scan.
Jeremy.
(This used to be commit 7055fa0bc43f6e2b3f04b8901fccea80d59bf490)
2000-12-08 00:39:32 +00:00
Jeremy Allison
abf055046f Ok - this is a big patch - and it may break smbd a bit (although
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-19 02:58:24 +00:00
Jeremy Allison
636f146abf Restructuring of vfs layer to include a "this" pointer - can be an fsp or
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-10-06 03:21:49 +00:00
Jeremy Allison
b43b2e4f8a Restructuring of the code to remove dos_ChDir/dos_GetWd and re-vector them
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-09-27 19:09:59 +00:00
Andrew Tridgell
49a0e6d598 more merging voodoo
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-05-10 10:41:59 +00:00
Andrew Tridgell
700f72453e - removed all our old wildcard matching code and replaced it with a
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-30 11:04:28 +00:00
Andrew Tridgell
689ec46450 the bulk of the changes to get rid of fd_ptr and move print open
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-04-10 13:05:23 +00:00
Tim Potter
427a3baa9c Fix some more compile warnings.
(This used to be commit 507624dbc0a1a9e1df72a6b8de45038e86a9e5b1)
2000-02-07 00:41:58 +00:00
Tim Potter
3b6298b001 Fix some compile warnings.
(This used to be commit ccbd936211d4bfc8687cef78405ae58127289d13)
2000-02-04 05:18:06 +00:00
Tim Potter
ae7696117e Put back lots of missing calls to dos_to_unix(). Thanks to
aono@cc.osaka-kyoiku.ac.jp (Tomoki AONO)
(This used to be commit 176c405d2702a4245561ff56c8eac3c754a0dea3)
2000-02-03 23:08:24 +00:00
Tim Potter
16bb009dbb Mega-VFS merge. Yeah baby!
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-02-03 05:17:25 +00:00
Jeremy Allison
ace4006c9f Added hash-based stat cache code from Ying Chen.
Jeremy.
(This used to be commit b62a1bd6328f5894ae1a2fef3ef6fc66304ade52)
2000-01-26 21:25:35 +00:00
Andrew Tridgell
3db52feb1f first pass at updating head branch to be to be the same as the SAMBA_2_0 branch
(This used to be commit 453a822a76780063dff23526c35408866d0c0154)
1999-12-13 13:27:58 +00:00
Luke Leighton
939f6d6794 more dfs stuff. this looks like it's going to be more appropriate to use
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-07-15 20:44:24 +00:00
Tim Potter
a4194191ce Use VFS I/O for stat_cache_lookup()
(This used to be commit 5ece1fcffbc5a5062c02edf6f2ecb405c2a2f43e)
1999-04-05 05:18:44 +00:00
Tim Potter
6d5ef2e929 Use VFS operations for file I/O.
(This used to be commit cfddbdb62485256a947a30e04c753200451cbe1c)
1999-04-04 06:25:13 +00:00
Andrew Tridgell
bb5fab7b55 formatting change
(This used to be commit 94fc7fe3afa1dc5547050248738eb697c1eeef59)
1998-11-21 01:26:18 +00:00
Richard Sharpe
7c45b3c25c Added code to convert empty file names to "." so we avoid
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-09 10:03:19 +00:00
Richard Sharpe
4c2b041e78 Add a DEBUG to unix_convert
(This used to be commit ac61a102473c7f23938368f9bfea494cd56344a1)
1998-10-09 06:47:22 +00:00
Jeremy Allison
cf3a9741dc Changes to test in configure if capabilities are enabled on a system.
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-28 21:43:48 +00:00
Jeremy Allison
a377543cc0 Fixed the problem with reply_getatr() being passed a "" name in reply_getatr,
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-26 03:49:25 +00:00
Andrew Tridgell
95f99e80b4 I've disabled the conversion of null filenames to "." until we solve
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-25 03:52:29 +00:00
Jeremy Allison
fc82bd2914 Small bit of paranioa. Ensure that if the incoming name to
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-19 03:34:12 +00:00
Jeremy Allison
aab0323d29 Improved stat cache code by uppercasing any search name that gets added to
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-10 00:35:10 +00:00
Jeremy Allison
6e0c276ec8 Added back groupname map stuff removed by Andrew's "slash 'n' burn"
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-08 19:21:04 +00:00
Andrew Tridgell
4fc5a74ffa add a "stat cache" boolean smb.conf option. (defaults to on)
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-06 01:37:14 +00:00
Andrew Tridgell
fd33412fa0 fixed a stat cache bug (the one found by Matthew Geier).
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-05 15:31:10 +00:00
Andrew Tridgell
f6044c87c0 some cleanups to use ZERO_STRUCT() and friends
(This used to be commit 7b154dc4313324dfad6cf0117b8ce246bf12bf16)
1998-09-05 13:24:20 +00:00
Andrew Tridgell
e9ea36e4d2 tridge the destroyer returns!
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-05 05:07:05 +00:00
Andrew Tridgell
0b5cc17309 fixed a bug in the name mangling code. It implicitly assumed that
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-03 03:14:31 +00:00
Jeremy Allison
1855627413 More abstraction of file system data types, to move to a 64
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-09-01 20:11:54 +00:00