1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

28799 Commits

Author SHA1 Message Date
tprouty
69d61453df s3: Fix trans2 path to use case-insensitive stat optimization
Often times before creating a file, a client will first query to see
if it already exists.  Since some systems have a case-insensitive stat
that is called from unix_convert, we can definitively return
STATUS_NO_SUCH_FILE to the client without scanning the whole
directory.

This code path is taken from trans2querypathinfo, but trans2findfirst
still does a full directory scan even though the get_real_filename
(the case-insensitive stat vfs call) can prevent this.

This patch adds the get_real_filename call to the trans2find* path,
and also changes the vfs_default behavior for
SMB_VFS_GET_REAL_FILENAME.  Previously, in the absence of a
get_real_filename implementation, we would fallback to the full
directory scan.  The default behavior now returns -1 and sets errno to
EOPNOTSUPP.  This allows SMB_VFS_GET_REALFILENAME to be called from
trans2* and unix_convert.
2009-05-05 16:43:53 -07:00
Jeremy Allison
e091fdc565 Make cli_getattrE async.
Jeremy.
2009-05-05 16:28:44 -07:00
Steven Danneman
798389c49a s3:onefs.so Change system function names
Addendum to c49730e1.  Use newer cookie conversion names.
2009-05-05 14:42:19 -07:00
Volker Lendecke
386a5d99b3 Fix bug 6302: Give the VFS a chance to read from 0-byte files 2009-05-05 13:44:47 -07:00
Günther Deschner
fee4c99be4 s3-ldap: fix more callers of smbldap_dn_talloc() that were passing a NULL context.
Guenther
2009-05-05 21:22:28 +02:00
Günther Deschner
5b37df21f6 s3-ldapsam: Fix Bug #6313: ldapsam_update_sam_account() crashes while doing talloc_free on malloced memory.
Guenther
2009-05-05 21:14:53 +02:00
Michael Adam
0ca795ef4f s3:loadparm: use the returnvalue of service_ok() in process_smbconf_service().
Michael
2009-05-05 17:58:00 +02:00
Jeremy Allison
2c4725462e Turn on POSIX test (small test) on buildfarm.
Jeremy.
2009-05-04 15:55:23 -07:00
Jeremy Allison
d34651f9d2 Fix the async calls for the posix_unlink and posix_rmdir.
Jeremy.
2009-05-04 15:50:35 -07:00
Steven Danneman
c49730e15b s3:onefs.so fix issue with missing entries when enumerating directories
This bug prompted several, fairly large changes to the of OneFS's
readdirplus() within Samba.

One fundamental problem is that we kept our cache cursor pointed at the
next entry to be returned from onefs_readdir(), while the resume cookie
needed to refill the cache such that our cursor would be on this entry,
was located in the previous cache entry.  This meant that to correctly handle
seekdir() cases which could be found within the existing cache, and cases
where a cache reload was needed, required that the cache always hold
at least two entries: the entry we wished to return, and the previous entry
which held the resume cookie.  Since the readdirplus() syscall gives us no
guarantee that it will always return these two direntries, there was a
fundamental problem with this design.

To fix this problem, I have rearchitected the onefs_readdir() path to keep
its pointer on the entry which contains the resume_cookie, not the entry
which will be returned next.  Essentially, I changed onefs_readdir() from a
"return an entry then increment the cursor" model to "increment the cursor
then return an entry".  By doing this, we only require that a single entry
be within the cache: the entry containing the resume cookie.

Second, there have been numerous off-by-one bugs in my implementation of
onefs_seekdir() which did a mapping between the 64-bit resume cookie
returned by readdirplus() and its own monotonically increasing "location"
offset.  Furthermore, this design caused a somewhat frequent waste of
cycles, as in some cases we'd need to re-enumerate the entire directory to
recover the current "location" from an old resume cookie.  As this code was
somewhat difficult to understand, prone to bugs, and innefficient in some
cases I decided it was better to wholesale replace it now, rather than later.

It is possible to algorithmically map the 64-bit resume cookies from
readdirplus() into 32-bit offset values which SMB requires.  The onefs.so
module now calls into a system library to do this conversion.  This greatly
simplifies both the seekdir() and telldir() paths and is more efficient.
2009-05-04 15:02:17 -07:00
Tim Prouty
1b223eeb59 s3 torture: Only close if open was successful 2009-05-04 13:26:27 -07:00
Jeremy Allison
651fb412a8 Ensure we use UID-REGRESSION-TEST. It's a very short test.
Jeremy.
2009-05-04 11:22:13 -07:00
Jeremy Allison
5dae04e055 Torture test for bug #6315 - smbd crashes doing vfs_full_audit on IPC$ close event.
Shows that doing a tdis with invalid uid succeeds.
Jeremy.
2009-05-04 10:40:57 -07:00
Tim Prouty
1b2c65ff8d s3 torture: Fix comparison is always true warning 2009-05-04 08:52:26 -07:00
Jeremy Allison
e46a88ce35 Fix bug #6315 smbd crashes doing vfs_full_audit on IPC$ close event.
The underlying problem
is that once SMBulogoff is called, all server_info contexts associated with the
vuid should become invalid, even if that's the context being currently used by
the connection struct (tid). When the SMBtdis comes in it doesn't need a valid
vuid value, but the code called inside vfs_full_audit always assumes that there
is one (and hence a valid conn->server_info pointer) available.

This is actually a bug inside the vfs_full_audit and other code inside Samba,
which should only indirect conn->server_info on calls which require AS_USER to
be set in our process table. I could fix all these issues, but there's no
guarentee that someone might not add more code that fails this assumption, as
it's a hard assumption to break (it's usually true).

So what I've done is to ensure that on SMBulogoff the previously used
conn->server_info struct is kept around to be used for print debugging purposes
(it won't be used to change to an invalid user context, as such calls need
AS_USER set). This isn't strictly correct, as there's no association with the
(now invalid) context being freed and the call that causes conn->server_info to
be indirected, but it's good enough for most cases.

The hard part was to ensure that once a valid context is used again (via new
sessionsetupX calls, or new calls on a still valid vuid on this tid) that we
don't leak memory by simply replacing the stored conn->server_info pointer. We
would never actually leak the memory (as all conn->server_info pointers are
talloc children of conn), but with the previous patch a malicious client could
cause many server_info structs to be talloced by the right combination of SMB
calls. This new patch introduces free_conn_server_info_if_unused(), which
protects against the above.
Jeremy.
2009-05-04 08:31:40 -07:00
Volker Lendecke
7070256f5e Do not crash in ctdbd_traverse if ctdbd is not around 2009-05-04 14:46:17 +02:00
Volker Lendecke
796764d92b Increase debug level of "create_connection_server_info failed" message
I don't think we should unconditionally send every refused connection attempt
to a share to syslog, that's where all debug level 0 messages end up.
2009-05-04 12:41:54 +02:00
Günther Deschner
fe839b65a7 s3-printing: Fix driver upload for Xerox 4110 PS printer driver.
We need to allow to set filesystem capabilities from the default vfs in
create_conn_struct() in order to find mixed-case filenames. Thanks Volker!

This one was hard to find, so a little longer explanation:

When a Windows client tries to upload e.g. the Xerox 4110 PS driver, the client
first uploads the driver files to the [print$] share. Some of them (in this case
the Windows Postscript drivers) are with uppercase filenames while some of them
(like the PPD file) are in lowercase. After the driver upload the client issues
the spoolss_AddPrinterDriverEx() call with level 6. There the client tries to
add the PPD file with an uppercase filename (while having stored it in lowercase
on the server). The internal spoolss add driver functions then could not find the
appropriate filename while trying to move them to the version subdirectory (in
this case W32X86/3) and fails then entire spoolss_AddPrinterDriverEx() call.
With this fix, the convert_unix_name() name finds the correct file and
the spoolss_AddPrinterDriverEx() succeeds.

Guenther
2009-05-04 12:12:14 +02:00
Volker Lendecke
9271dc5f7e Fix Coverity ID 913 (NEGATIVE_RETURNS) -- gd, please check! 2009-05-03 23:06:01 +02:00
Volker Lendecke
2fe79f7584 Fix an invalid type warning 2009-05-03 22:48:31 +02:00
Volker Lendecke
4949a2cfaa Fix some warnings due to uint16_t!=-1 always being true 2009-05-03 22:48:31 +02:00
Volker Lendecke
38cb53cdeb Fix a bunch of type-punned warnings -- gd, please fix properly :-) 2009-05-03 22:48:30 +02:00
Geza Gemes
5c2404fb86 Fix bug 6136: New AFS syscall conventions
Haven't checked this myself, but as I've already got several reports that Samba
won't compile against current OpenAFS anymore, I just believe Geza Gemes. This
patch only affects AFS code, so it should not hurt anything else.

Volker
2009-05-03 22:16:01 +02:00
Volker Lendecke
e2052f128f Attempt to fix the build on SerNet-sles8
That compiler does not like #if embedded into the macro NT_STATUS_IS_OK.
2009-05-02 19:11:52 +02:00
Volker Lendecke
cacfd6ee01 Explicitly link in pthreads for lib/pthreadpool if required
No idea why it works on my Linux without -lpthread ... :-)
2009-05-02 17:15:02 +02:00
Volker Lendecke
79f33674c6 Fix a malloc/talloc mixup 2009-05-02 12:44:31 +02:00
Volker Lendecke
9713476f65 Many build farm boxes do not have clock_gettime 2009-05-01 21:43:25 +02:00
Stefan Metzmacher
9dbb535aa5 tsocket: remove tsocket_context related stuff
It will be replaced by tdgram_context and tstream_context.

metze
2009-05-01 17:38:21 +02:00
Volker Lendecke
5b7b47f015 Add getaddrinfo_send/recv 2009-05-01 12:30:59 +02:00
Volker Lendecke
8cf75770cf Add fncall_send/recv 2009-05-01 12:30:59 +02:00
Volker Lendecke
db2cc8c9f2 Add thread pool
Included if pthreads are found, can be disabled with --enable-pthreadpool=no

Tim, Steven, I haven't yet seen comments from you. You have been asking for
such a thing at SambaXP. Do you like this? :-)
2009-05-01 12:30:58 +02:00
Jeremy Allison
f3af298e5b Cause cli_close to return an NTSTATUS.
Jeremy.
2009-04-30 16:57:42 -07:00
Michael Adam
384c1aaa8e s3:config.sub: clean some space/tab mixup that git complains about
Michael
2009-05-01 01:18:01 +02:00
Michael Adam
f3308b91d7 s3:config.sub: replace old FSF address by the web site url.
Michael
2009-05-01 01:18:00 +02:00
Michael Adam
62a69994f2 s3:config.sub: move to GPLv3
Michael
2009-05-01 01:18:00 +02:00
Michael Adam
f81c02c3f3 s3:update config.sub from gnu.org (2009-04-17)
as requested in bug #6292.

This is taken from
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD

Michael
2009-05-01 01:17:59 +02:00
Michael Adam
faaa306c6a s3:config.guess: clean some whitespace/tab mixtures that git complains about
Michael
2009-05-01 01:17:59 +02:00
Michael Adam
d230ac7b32 s3:config.guess: replace old FSF address by the web site url.
Michael
2009-05-01 01:17:59 +02:00
Michael Adam
fee7829458 s3:config.guess: move to GPLv3 2009-05-01 01:17:58 +02:00
Michael Adam
1188c78f53 s3:update config.guess form gnu.org (version 2009-04-27)
as requested in bug #6292.

This is taken from
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD

Michael
2009-05-01 01:17:58 +02:00
Jeremy Allison
8cf78ff553 Get medieval on our ass about SMB1 file descriptors being 16 bits, not an int.
Convert all uses of cli_open(), cli_nt_createXXX to NTSTATUS versions.
This is smaller than it looks, it just fixes a lot of old code.
Next up, ensure all cli_XX functions return NTSTATUS.
Jeremy.
2009-04-30 15:26:43 -07:00
Günther Deschner
ab4b8c9c04 s3-netapi: Fix Bug #6309: support remote unjoining of Windows 2003 or greater.
Found by David Markey <admin@dmarkey.com>. Thanks!

Guenther
2009-04-30 23:40:09 +02:00
Günther Deschner
baf7850689 s3-printing: rework move_driver_file_to_download_area() a bit for clarity.
Guenther
2009-04-30 17:33:07 +02:00
Günther Deschner
af5a71d528 s3-lsa: use LSA_POLICY_MODE flags in _lsa_GetSystemAccessAccount().
Guenther
2009-04-30 14:28:38 +02:00
Günther Deschner
eee446a948 s3-nss_wins: Fix unresolved ldb symbols in libnss_wins.so.
The objects for this module should probably be cleaned up once.

Guenther
2009-04-30 14:18:09 +02:00
Volker Lendecke
f4fcf2c1c0 Re-import the v3-3 version of str_list_make().
The merged version behaves differently: "Domain Users" is parsed into two
values, as it does not look at quotes. Samba3 users depend on the ability do
say for example

valid users = "domain users"

which would not work anymore with the merged version.

Thanks to Björn Jacke for testing this!

Volker
2009-04-30 13:42:12 +02:00
Volker Lendecke
3b666bf0f9 Fix notify_onelevel: notify is not necessarily enabled
Thanks to Günther Deschner!

Volker
2009-04-30 12:25:46 +02:00
Günther Deschner
d22965e2e5 s3-spoolss: avoid referring to uid 0 in spoolss server (use sec_initial_uid() instead).
Guenther
2009-04-30 11:22:23 +02:00
Günther Deschner
233bfb25c9 s3-printing: use move_driver_file_to_download_area() to avoid code duplication.
Guenther
2009-04-30 11:22:23 +02:00
Günther Deschner
a2a155bee5 s3-printing: add move_driver_file_to_download_area().
Guenther
2009-04-30 11:22:23 +02:00