1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-22 22:04:08 +03:00

725 Commits

Author SHA1 Message Date
Andrew Tridgell
90067934cd r3428: switched to using minimal includes for the auto-generated RPC code.
The thing that finally convinced me that minimal includes was worth
pursuing for rpc was a compiler (tcc) that failed to build Samba due
to reaching internal limits of the size of include files. Also the
fact that includes.h.gch was 16MB, which really seems excessive. This
patch brings it back to 12M, which is still too large, but
better. Note that this patch speeds up compile times for both the pch
and non-pch case.

This change also includes the addition iof a "depends()" option in our
IDL files, allowing you to specify that one IDL file depends on
another. This capability was needed for the auto-includes generation.
(This used to be commit b8f5fa8ac8e8725f3d321004f0aedf4246fc6b49)
2007-10-10 13:05:09 -05:00
Andrew Tridgell
c1dc067207 r3426: removed 2 unused files, and some unused variables
(This used to be commit dd0618d5950ca052b57715cb8451af23e4622049)
2007-10-10 13:05:08 -05:00
Andrew Tridgell
475c958450 r3425: got rid of a bunch of cruft from rewrite.h
(This used to be commit 3f902f8d851d32fa81d89ed61bfda6edaea00984)
2007-10-10 13:05:08 -05:00
Andrew Tridgell
37fffa54cf r3424: don't run mkproto.pl on pidl generated code, instead rely on pidl generating the
prototypes itself
(This used to be commit e694aeefe7c725d417abdd3c48d16ff1d932c223)
2007-10-10 13:05:08 -05:00
Andrew Tridgell
9f1210a243 r3419: moved the libcli/raw structures into libcli/raw/libcliraw.h
and made them private
(This used to be commit 386ac565c452ede1d74e06acb401ca9db99d3ff3)
2007-10-10 13:05:07 -05:00
Andrew Tridgell
b24fcfc1aa r3400: - allow callers to control the flags2 field in raw packets
- added testing of the FLAGS2_READ_PERMIT_EXECUTE bit in the ntdeny tests
(This used to be commit adf4a682705871186f3b77ea6d417942445fc5d3)
2007-10-10 13:05:05 -05:00
Andrew Tridgell
feff2e9cbd r3390: fixed schannel server side support. RPC-SCHANNEL now works against Samba4.
(This used to be commit 01f5c1c72d9fc8f21029adc586154b0c54f76c9e)
2007-10-10 13:05:04 -05:00
Andrew Tridgell
d93636c29e r3387: fixed pvfs to pass the NTDENY tests. The tricky bit was
SA_RIGHT_FILE_EXECUTE, which depends on a flags2 bit
(This used to be commit c36851d230bcf552ed79322f8358060ab164ec09)
2007-10-10 13:05:04 -05:00
Andrew Tridgell
65510d99e4 r3384: added SA_RIGHT_FILE_WRITE_APPEND, which is a combination of write and append
(This used to be commit d098636d7faacce7f024c74b945899edb824d740)
2007-10-10 13:05:03 -05:00
Andrew Tridgell
ad8c4ae941 r3380: - changed the default behaviour of server signing. We now have a default
setting of "server signing = auto", which means to offer signing
  only if we have domain logons enabled (ie. we are a DC). This is a
  better match for what windows clients want, as unfortunately windows
  clients always use signing if it is offered, and when they use signing
  they not only go slower because of the signing itself, they also
  disable large readx/writex support, so they end up sending very small
  IOs for.

- changed the default max xmit again, this time matching longhorn,
  which uses 12288. That seems to be a fairly good compromise value.
(This used to be commit e63edc81716fefd58a3be25deb3b25e45471f196)
2007-10-10 13:05:03 -05:00
Jelmer Vernooij
9dc3f789c4 r3369: More registry updates
We now pass the RPC-WINREG torture test.
Also, constructions like the following work now:

regtree <-> smbd <-> NTUSER.DAT
(This used to be commit df952e95cd1cbbfb62b4620e9452993aaef44ad3)
2007-10-10 13:05:02 -05:00
Andrew Tridgell
9752471973 r3363: added basic support for SA_RIGHT_FILE_EXECUTE, needed for opening .dll files
(This used to be commit ba1bfd51e1b694cb69afe559f695addaf03b4d81)
2007-10-10 13:05:01 -05:00
Andrew Tridgell
072dfad0af r3354: honor "max xmit" and "max mux" from smb.conf in our client code. This
is important as it allows the test suite to exercise the multiple
reply logic in smbd for trans2 search replies.
(This used to be commit 865159016ab1e806465a55697444228fb3fa286e)
2007-10-10 13:05:00 -05:00
Stefan Metzmacher
0197195957 r3336: use a struct ntvfs_async_state to be able to do async chaning of ntvfs modules
the idea is that a passthru module can use ntvfs_async_state_push() before
calling ntvfs_next_*() and in the _send function it calls
ntvfs_async_state_pop() and then call the upper layer send_fn itself

- ntvfs_nbench is now fully async

- the ntvfs_map_*() functions and the trans(2) mapping functions are not converted yet

metze
(This used to be commit fde64c0dc142b53d128c8ba09af048dc58d8ef3a)
2007-10-10 13:04:57 -05:00
Andrew Tridgell
c272e60955 r3315: converted the libcli/raw/ code to use the generic socket library. This
allows me to test with the socket:testnonblock option. It passes.
(This used to be commit 7cb4bf8662825d507d8246647ffb10aa08bad794)
2007-10-10 13:04:53 -05:00
Andrew Tridgell
6a0f26c709 r3284: - don't use a enum for bit-fields. It isn't legal C (as C is limited to
signed integer values for enum), and it is also very confusing to read.

  Also, please align defines nicely. The value of SV_TYPE_DOMAIN_ENUM
  was defined incorrectly, which became obvious when you align the
  defines, but wasn't at all obvious in the original code.

- removed redundent defines in smb.h
(This used to be commit fe042b8e5ca15dfd986bc0c05d464214a51cc0cf)
2007-10-10 13:04:50 -05:00
Andrew Tridgell
05ad898f68 r3271: use "struct messaging_context *" instead of "void *" in messaging API
(This used to be commit cc93813e4a09c538ad485dc2b3cb4c9be34f3d18)
2007-10-10 13:04:48 -05:00
Andrew Tridgell
fef66179dd r3237: - allow for readx calls larger than 64k
- combine setattre and standard levels in setfileinfo, as they use the
  same structure
(This used to be commit e9aa1f789955533aca4fe43d5d74ffa1e8d1300b)
2007-10-10 13:04:43 -05:00
Andrew Bartlett
7397361dae r3175: Add winbind back into includes.h (spotted by tpot)
Andrew Bartlett
(This used to be commit 2b0f04167d6512c7eaa44f8234f0be63c55f9582)
2007-10-10 13:04:36 -05:00
Andrew Tridgell
7bcf3ce8f6 r3171: in qfileinfo getattre and standard have identical structures, so
simplify code by making them aliases
(This used to be commit 91a1dc121cba77a3400935c199897cde50396cdd)
2007-10-10 13:04:35 -05:00
Jelmer Vernooij
40c5a1d99f r3162: Add client-side support for the ncalrpc: and ncacn_unix_stream: transports.
ncalrpc uses the new config option "ncalrpc dir" for creating unix sockets.
(This used to be commit b15cfbe2512961a199ecb069730d9a19787579f5)
2007-10-10 13:02:27 -05:00
Andrew Tridgell
4b14c8a09f r3082: added a "cifs:mapgeneric" option, which tells the cifs backend to use
the ntvfs_generic mapping functions rather than sending the exact
function asked for. This allows the generic mapping functions to be
tested by comparing the behaviour of smbtorture against two cifs
backend shares, one using "cifs:mapgeneric = true" and the other
"cifs:mapgeneric = False"
(This used to be commit c240c6bca5e10f1acbff45b0ed41c4c1ebcaae96)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
20d17b8057 r3081: several updates to ntvfs and server side async request handling in
preparation for the full share modes and ntcreatex code that I am
working on.

highlights include:

 - changed the way a backend determines if it is allowed to process a
   request asynchronously. The previous method of looking at the
   send_fn caused problems when an intermediate ntvfs module disabled
   it, and the caller then wanted to finished processing using this
   function. The new method is a REQ_CONTROL_MAY_ASYNC flag in
   req->control_flags, which is also a bit easier to read

 - fixed 2 bugs in the readbraw server code. One related to trying to
   answer a readbraw with smb signing (which can't work, and crashed
   our signing code), the second related to error handling, which
   attempted to send a normal SMB error packet, when readbraw must
   send a 0 read reply (as it has no header)

 - added several more ntvfs_generic.c generic mapping functions. This
   means that backends no longer need to implement such esoteric
   functions as SMBwriteunlock() if they don't want to. The backend
   can just request the mapping layer turn it into a write followed by
   an unlock. This makes the backends considerably simpler as they
   only need to implement one style of each function for lock, read,
   write, open etc, rather than the full host of functions that SMB
   provides. A backend can still choose to implement them
   individually, of course, and the CIFS backend does that.

 - simplified the generic structures to make them identical to the
   principal call for several common SMB calls (such as
   RAW_WRITE_GENERIC now being an alias for RAW_WRITE_WRITEX).

 - started rewriting the pvfs_open() code in preparation for the full
   ntcreatex semantics.

 - in pvfs_open and ipc_open, initially allocate the open file
   structure as a child of the request, so on error we don't need to
   clean up. Then when we are going to succeed the open steal the
   pointer into the long term backend context. This makes for much
   simpler error handling (and fixes some bugs)

 - use a destructor in the ipc backend to make sure that everthing is
   cleaned up on receive error conditions.

 - switched the ipc backend to using idtree for fnum allocation

 - in the ntvfs_generic mapping routines, use a allocated secondary
   structure not a stack structure to ensure the request pointer
   remains valid even if the backend replies async.
(This used to be commit 3457c1836c09c82956697eb21627dfa2ed37682e)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
72093ce62f r3064: - use UINT8_MAX and UINT16_MAX instead of hex values for idr_get_new() limits
- change idr_get_new() to use > instead of >= in the limit check
(This used to be commit 834b09929bcb8aabdd151b7c2306001497cabdb4)
2007-10-10 13:01:55 -05:00
Andrew Tridgell
53e30b391d r3052: added talloc_zero_p() and talloc_zero_array_p() calls, for allocating zeroed memory
(This used to be commit 65b7316e9b4589b02a8bd94150ccbfe526f6d159)
2007-10-10 13:01:53 -05:00
Andrew Tridgell
d0cc571e30 r3029: implemented byte range lock timeouts.
This adds a pvfs_wait_message() routine which uses the new messaging
system, event timers and talloc destructors to give a nice generic
async event handling system with a easy to use interface. The
extensions to pvfs_lock.c are based on calls to pvfs_wait_message()
routines.

We now pass all of our smbtorture locking tests, although while
writing this code I have thought of some additonal tests that should
be added, particularly for lock cancel operations. I'll work on that
soon.

This commit also extends the smbtorture lock tests to test the rather
weird 0xEEFFFFFF locking semantics that I have discovered in
win2003. Win2003 treats the 0xEEFFFFFF boundary as special, and will
give different error codes on either side of it. Locks on both sides
are allowed, the only difference is which error code is given when a
lock is denied. Anyone like to hazard a guess as to why? It has
me stumped.
(This used to be commit 4395c0557ab175d6a8dd99df03c266325949ffa5)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
53891ed37e r3017: nicer memory handling for event_context_merge()
(This used to be commit 1cef44505e5de9b8ae5206522b624082ad2343b2)
2007-10-10 12:59:58 -05:00
Andrew Tridgell
fef617c31b r3012: added initial support for byte range locking in the posix vfs. This is
enough for us to pass locktest, but does not yet support lock timeouts
and some of the other esoteric features.
(This used to be commit 58a92abd88f190bc60894a68e0528e95ae33fe39)
2007-10-10 12:59:57 -05:00
Andrew Tridgell
12ea0fd34c r3005: added talloc wrappers around tdb_open() and ldb_connect(), so that the
caller doesn't have to worry about the constraint of only opening a
database a single time in a process. These wrappers will ensure that
only a single open is done, and will auto-close when the last instance
is gone.

When you are finished with a database pointer, use talloc_free() to
close it.

note that this code does not take account of the threads process
model, and does not yet take account of symlinks or hard links to tdb
files.
(This used to be commit 04e1171996612ddb15f84134cadded68f0d173b2)
2007-10-10 12:59:56 -05:00
Stefan Metzmacher
1890e6a659 r2992: drsuapi uses WERROR not NTSTATUS
metze
(This used to be commit 757f67c08b0b1309d8a0b900539111c7bc430b0e)
2007-10-10 12:59:55 -05:00
Andrew Tridgell
70f182e8f5 r2961: fixed a silly typo
(This used to be commit f76a1cf640a909aa2a4e26e65f59020f9ab575f4)
2007-10-10 12:59:52 -05:00
Andrew Tridgell
3c1fdfa7fb r2960: during a lunchtime discussion I found out that all powerpc processors
can correctly (and quickly!) handle unaligned little endian memory
accesses, just like i386. This should reduce code size and speeds
things up quite a lot on ppc, at the expense of some inline asm code
(whcih means it only works with gcc)
(This used to be commit 2a0c427c2bf2f8b0739f12c78151b819388c44d4)
2007-10-10 12:59:51 -05:00
Andrew Tridgell
0bd8d427d0 r2951: fixed the intptr_t test for discard_const()
(This used to be commit 3318cf2722597e57d1731152b2607f6b167e45b9)
2007-10-10 12:59:51 -05:00
Andrew Tridgell
598e82e7ad r2900: rusty pointed out to me that discard_const() can be done via a macro
on systems that have the intptr_t type, and for systems that don't
have it, they also almost certainly won't have -Wcast-qual, so we can use a
void* cast.
(This used to be commit 2132d38f9c5ba59825558d5ba084a514ebc2626b)
2007-10-10 12:59:46 -05:00
Andrew Tridgell
7d32679e96 r2857: this commit gets rid of smb_ucs2_t, wpstring and fpstring, plus lots of associated functions.
The motivation for this change was to avoid having to convert to/from
ucs2 strings for so many operations. Doing that was slow, used many
static buffers, and was also incorrect as it didn't cope properly with
unicode codepoints above 65536 (which could not be represented
correctly as smb_ucs2_t chars)

The two core functions that allowed this change are next_codepoint()
and push_codepoint(). These functions allow you to correctly walk a
arbitrary multi-byte string a character at a time without converting
the whole string to ucs2.

While doing this cleanup I also fixed several ucs2 string handling
bugs. See the commit for details.

The following code (which counts the number of occuraces of 'c' in a
string) shows how to use the new interface:

size_t count_chars(const char *s, char c)
{
	size_t count = 0;

	while (*s) {
		size_t size;
		codepoint_t c2 = next_codepoint(s, &size);
		if (c2 == c) count++;
		s += size;
	}

	return count;
}
(This used to be commit 814881f0e50019196b3aa9fbe4aeadbb98172040)
2007-10-10 12:59:39 -05:00
Andrew Tridgell
15b9736ed3 r2791: got rid of talloc_unreference() and instead created talloc_unlink(),
which is much clearer and simpler to use. It removes a specific parent
from a pointer, no matter whether that parent is a "reference" or a
direct parent. This gives complete control over the free process.
(This used to be commit 6c563887f1b9b8c842309a523e88b6f2a32db10f)
2007-10-10 12:59:34 -05:00
Andrew Tridgell
4f13ebef5d r2744: ben elliston taught me about gcov today, which allows you to measure
the % coverage in terms of lines of code of a test suite. I thought a
good first place to start with gcov was the talloc test suite. When I
started the test suite covered about 60% of all lines of code in
talloc.c, and now it covers about 99%. The only lines not covered are
talloc corruption errors, as that would cause smb_panic() to fire.

It will be interesting to try gcov on the main Samba test suite for
smbd. We won't achieve 100% coverage, but it would be nice to get to
90% or more.

I also modified the talloc.c sources to be able to be build standalone, using:

  gcc -c -D_STANDALONE_ -Iinlcude lib/talloc.c

that should make it much easier to re-use talloc in other projects
(This used to be commit 8d4dc99b82efdf24b6811851c7bdd4af5a4c52c9)
2007-10-10 12:59:29 -05:00
Andrew Tridgell
6f068e207a r2678: from_name and to_name aren't needed in smb_iconv_t
(This used to be commit f3844cc0a5ad6b03f166435d44db02763df345d7)
2007-10-10 12:59:21 -05:00
Andrew Tridgell
351ca44e8b r2674: I have realised that talloc() should have its context marked const, as
a const pointer really means that "the data pointed to by this pointer
won't change", and that is certainly true of talloc(). The fact that
some behind-the-scenes meta-data can change doesn't matter from the
point of view of const.

this fixes a number of const warnings caused by const data structures
being passed as talloc contexts. That will no longer generate a
warning.

also changed the talloc leak reporting option from --leak-check to
--leak-report, as all it does is generate a report on exit. A new
--leak-report-full option has been added that shows the complete tree
of memory allocations, which is is quite useful in tracking things down.

NOTE: I find it quite useful to insert talloc_report_full(ptr, stderr)
calls at strategic points in the code while debugging memory
allocation problems, particularly before freeing a major context (such
as the connection context). This allows you to see if that context has
been accumulating too much data, such as per-request data, which
should have been freed when the request finished.
(This used to be commit c60ff99c3129c26a9204bac1c6e5fb386114a923)
2007-10-10 12:59:20 -05:00
Andrew Tridgell
5b44130afa r2671: we're getting too many errors caused by the talloc_realloc() API not
taking a context (so when you pass a NULL pointer you end up with
memory in a top level context). Fixed it by changing the API to take a
context. The context is only used if the pointer you are reallocing is
NULL.
(This used to be commit 8dc23821c9f54b2f13049b5e608a0cafb81aa540)
2007-10-10 12:59:20 -05:00
Andrew Tridgell
e3880fa759 r2660: - converted the libcli/raw/ library to use talloc_increase_ref_count()
rather than manual reference counts

- properly support SMBexit in the cifs and posix backends

- added a logoff method to all backends

With these changes the RAW-CONTEXT test now passes against the posix backend
(This used to be commit c315d6ac1cc40546fde1474702a6d66d07ee13c8)
2007-10-10 12:59:18 -05:00
Andrew Tridgell
dbc2346de8 r2653: - data_blob() and data_blob_talloc() now get automatic names
- talloc_strdup() and related functions get automatic names
(This used to be commit 0cf427d14fe0a19cb3e85b6191be220f3d81080a)
2007-10-10 12:59:17 -05:00
Andrew Tridgell
ec0128ef01 r2649: - used some cpp tricks to make users of talloc() and talloc_realloc()
to get auto-naming of pointers very cheaply.

- fixed a couple of memory leaks found with the new tricks

A typical exit report for smbd is now:

talloc report on 'null_context' (total 811 bytes in 54 blocks)
        auth/auth_sam.c:334            contains     20 bytes in   1 blocks
        struct auth_serversupplied_info contains    498 bytes in  33 blocks
        UNNAMED                        contains      8 bytes in   1 blocks
        lib/data_blob.c:40             contains     16 bytes in   1 blocks
        iconv(CP850,UTF8)              contains     61 bytes in   4 blocks
        iconv(UTF8,CP850)              contains     61 bytes in   4 blocks
        iconv(UTF8,UTF-16LE)           contains     67 bytes in   4 blocks
        iconv(UTF-16LE,UTF8)           contains     67 bytes in   4 blocks
        UNNAMED                        contains     13 bytes in   1 blocks

which is much better than before
(This used to be commit 6e721393d03afd3c2f8ced8422533547a9e33342)
2007-10-10 12:59:16 -05:00
Andrew Tridgell
38aa974457 r2641: talloc_p() now produces a named talloc pointer, with the name
auto-derived from the type you are allocating. This is done with
basically zero overhead by relying on the stringify operator in cpp
producing string constants.

the result is that --leak-check nicely names all pointers that come
from talloc_p()
(This used to be commit bd86ebe2972af4d424df20db1e422919aa6203d0)
2007-10-10 12:59:15 -05:00
Andrew Tridgell
797d80879c r2632: a new approach to handling const errors. We have had huge numbers of
const warnings for a long time, and no real way to approach a
solution. Some of them are unavoidable due to the way the C standard
works (for example, any function that provides strchr() like
functionality _must_ produce a const warning)

I will be converting a bunch of places that currently produce const
warnings to use the discard_const_p(). Some of these will be
unavoidable const problems, some of them will be ones we will fix up
over time. At least this change means we will no longer be swamped
with const warnings, and we will easily be able to see when new
problems emerge.
(This used to be commit fec3288ad6ce58e8273e3f16e88037db49ecf046)
2007-10-10 12:59:14 -05:00
Andrew Tridgell
045543b661 r2618: before we had refererence counts in talloc I added a hack in the
server side request structure to prevent a structing being freed in
some circumstances. This change replaces this with the much more
robust mechanism of talloc_increase_ref_count().
(This used to be commit 3f7741f178b359f81cc98ef18cd69bf976123e9f)
2007-10-10 12:59:12 -05:00
Tim Potter
00e05a0b8b r2582: Merge checks for xattr and acl libraries from Samba3 so the {get,set}ntacl
programs can build on non-xattr machines.
(This used to be commit daad76207dbb4060c231a58c99970e837e1e858f)
2007-10-10 12:59:07 -05:00
Andrew Tridgell
ca60193f24 r2520: - finished implementing the server side of the old style search requests
(This used to be commit 4e4859c06b9de5fe60ebd17cfb09eed480b79ec1)
2007-10-10 12:59:01 -05:00
Jelmer Vernooij
369a5d64e4 r2518: Some long overdue changes:
- Samba4-style code in lib/registry (struct registry_key instead of REG_KEY, etc)
 - Use hives (like Windows has drives) instead of one root key (like a Unix FS)
 - usability fixes in the GTK utilities (autodetect the username,
	enable/disable options, etc)
 - fix gwsam compile
 - several bugfixes in the registry rpc code
 - do charset conversion in nt4 registry backend
(This used to be commit 2762ed3b9bf1d67dd54d63e02cddbfd71ea89892)
2007-10-10 12:59:01 -05:00
Jelmer Vernooij
930c32472f r2510: Make C++ compilers happy, use ifdef instead of if
(This used to be commit 7c31998da148cca53e798e3d89b9b754de2e64ac)
2007-10-10 12:59:00 -05:00