summaryrefslogtreecommitdiff
path: root/source4/lib
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r3005: added talloc wrappers around tdb_open() and ldb_connect(), so that theAndrew Tridgell6-81/+208
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-10r3004: removed some unused functionsAndrew Tridgell3-297/+0
(This used to be commit 247421ee648d1935b68a47195fe1709bb861a7d5)
2007-10-10r2985: got rid of the unused tdb_lockkeys() and tdb_unlockkeys() functionsAndrew Tridgell2-74/+0
they have been broken for 4 years (ever since they were added) and have been never used, which makes them prime candidates for destruction. (This used to be commit 0b53ab85aae4569c04495f07c18a65fd6b47bf4c)
2007-10-10r2981: Fix incorrect locks/unlocks in tdb_lockkeys()/tdb_unlockkeys().Jeremy Allison1-3/+3
Spotted by Taj Khattra <taj.khattra@gmail.com>. Jeremy. (This used to be commit a7d92301bbf45cb9e475e4876fdbb37644ad5871)
2007-10-10r2940: Complain when there is an attempt to register a backend for a ↵Jelmer Vernooij1-0/+2
subsystem that does not (yet) exist (This used to be commit 0130713fbe3d838964542a700839c4e276b18547)
2007-10-10r2932: character expansion in strlower_m or strupper_m is considered fatalAndrew Tridgell1-0/+4
(as it could cause a overflow). Print a message giving the character values involved in the expansion so it can be debugged if it happens. (This used to be commit 2a6f59f376a132fcbce8c8e9d1b38d8aae3e8561)
2007-10-10r2914: ... and support enumerating values (data is not handled yet, only the ↵Jelmer Vernooij1-30/+11
names) (This used to be commit b3bc055ac73ff239c2b267717ee91669ecdd4c9b)
2007-10-10r2913: - Don't print hive name if it is NULL (regtree)Jelmer Vernooij3-12/+9
- Initialise hive name (reg_interface) - Fix LDB backend (enumerating keys works now!) (This used to be commit 5086d6b2494f236ef67096b2dd4da4f7402a65c5)
2007-10-10r2911: Fix bug in opening relative keysJelmer Vernooij1-8/+12
(This used to be commit e7c256a92cc6cbe1cd6cc11a8fb37feba272d01c)
2007-10-10r2907: auto destroy iconv memory handles on exit, to make valgrind leakAndrew Tridgell1-19/+26
reports easier to read (less noisy) (This used to be commit e3009492b85ac90836aa9341687df5869f4ea291)
2007-10-10r2903: a considerably more efficient (both in terms of CPU and memory)Andrew Tridgell1-17/+17
convert_string_talloc() implementation. the previous version used a minimum of 512 bytes, which is way above the average of what is needed. (This used to be commit abcd841a8530ba3273d56c9001ea277611507be3)
2007-10-10r2902: make toupper_w() and tolower_w() slightly faster by putting the most ↵Andrew Tridgell1-8/+8
common conditions first (This used to be commit 878f6b565f4e80eefbb08f44551b3b4f647d7aa7)
2007-10-10r2901: if we can't load upcase.dat or lowcase.dat then don't waste 256kAndrew Tridgell1-27/+8
making fake tables, instead just do the approximate upper/lower inline with toupper() and tolower(). (This used to be commit 994392d085e87046212191b8f41eba628467c778)
2007-10-10r2900: rusty pointed out to me that discard_const() can be done via a macroAndrew Tridgell1-22/+0
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-10r2898: - Support enumerating remote registry valuesJelmer Vernooij2-76/+67
- Some LDB updates (This used to be commit 4b5bf739f5a8f39ff3633d738f6de42681a6b30f)
2007-10-10r2897: Fix double registration (of the registry subsystem) bugJelmer Vernooij1-16/+24
(This used to be commit f4860afc486da9fcd43798c81181d01eb0120a59)
2007-10-10r2872: got rid of a couple of unused (and horrible) functionsAndrew Tridgell2-244/+0
(This used to be commit 4bb410756df13c8c23d21b43c1186f3f9cb9f758)
2007-10-10r2871: - got rid of the last bits of non-threadsafe data in util_str.oAndrew Tridgell2-23/+7
- switch the fallback case tables to use talloc - moved the used-once octal_string() inline in loadparm.c (This used to be commit b04202eaacc87d264d463f75673ee0e68cd54f94)
2007-10-10r2867: make call_backtrace() publicStefan Metzmacher1-1/+1
this is very usefull we you don't want to use smb_panic() metze (This used to be commit 343b575baa528885f76be12b2cd707f092f85189)
2007-10-10r2857: this commit gets rid of smb_ucs2_t, wpstring and fpstring, plus lots ↵Andrew Tridgell9-752/+759
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-10r2792: got rid of talloc_ldb_alloc() and instead created talloc_realloc_fn(),Andrew Tridgell3-14/+17
so talloc now doesn't contain any ldb specific functions. allow NULL to be passed to a couple more talloc() functions (This used to be commit 1246f80d806fb5f63cfbf3879de6d546384552a8)
2007-10-10r2791: got rid of talloc_unreference() and instead created talloc_unlink(),Andrew Tridgell1-3/+48
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-10r2783: got rid of the unused remote architecture detection codeAndrew Tridgell1-40/+0
(This used to be commit 9a04664531601b8251dbf6a0922ab48e675adb90)
2007-10-10r2776: if there are no wildcard characters then use StrCaseCmp()Andrew Tridgell1-0/+6
note that this is not just an optimisation, it fixes a rare edge case when LANMAN1 is negotiated (This used to be commit 8d879cf54c2fe09d62a5c28b02a070cb80984744)
2007-10-10r2775: rewrote our ms_fnmatch code to be much more efficient, and to exactlyAndrew Tridgell1-154/+121
match w2k behaviour for older negotiated protocols. (This used to be commit bae2baeb0247ae8f840b3d3b5488c98d081789c5)
2007-10-10r2773: allow zero sized array tallocAndrew Tridgell1-4/+2
(This used to be commit 06c58ad221ec40e46310e847ebf640bd53e8e468)
2007-10-10r2744: ben elliston taught me about gcov today, which allows you to measureAndrew Tridgell1-58/+120
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-10r2742: - fixed a bug in talloc_unreference()Andrew Tridgell1-3/+3
- made the LOCAL-TALLOC smbtorture test much stricter, checking that block counts for every pointer are correct after every operation (This used to be commit 18d3e2647f0bedbba699d1ba2649c0cfe4526ef6)
2007-10-10r2737: fixed up a corner case where talloc_unreference() and talloc_free()Andrew Tridgell1-6/+17
might not place the pointer in the context specified in the docs. The code was assuming that pointer was at the head of the child list, which it may not be, depending on what other operations have happened in between. (This used to be commit e62bd7ef7ec80365ab00ce5b2051b7dc1726304b)
2007-10-10r2726: added a -r option to ldbdel to allow easy delete of a wholeAndrew Tridgell1-3/+39
subtree. Useful when cleaning up a mess after testing. (This used to be commit 476674af5519960300c0a07349c7cdf307af3822)
2007-10-10r2725: fixed ldbtest to give the basedn to ldb_search()Andrew Tridgell1-2/+2
(This used to be commit 19925f5bd8dd24742e5d216b0c491975ceb7d3a6)
2007-10-10r2721: added a -b option to ldbtest so it can be used with the new smbd ldap ↵Andrew Tridgell1-8/+10
server without changing realms (This used to be commit fd2725f5c0a2ea89bbfcb0403d1bc03fa7b7ec25)
2007-10-10r2718: - added a talloc_unreference() function as requested by metze.Andrew Tridgell1-2/+43
- added documentation for talloc_unreference() - made the abandoned child logic in talloc_free() clearer and more consistent (This used to be commit a87584c8e3fb06cd3ff29a918f681b5c6c32b9ff)
2007-10-10r2713: better handling of binary values in index key creationAndrew Tridgell1-1/+1
(This used to be commit b0c92616fb69d8139f66dc8144cfcc88ea6825dc)
2007-10-10r2712: fixed a bug in ldbtest to make it cope with an existing indexAndrew Tridgell1-2/+4
(This used to be commit 3f776a9b5c240312f161b651201458e43a9dd6a9)
2007-10-10r2709: finally solved the talloc reference problem.Andrew Tridgell1-39/+94
The problem was that the simple "uint_t ref_count;" in a talloc chunk did not give enough information. It told us that a pointer was referenced more than once, but it didn't say who it was referenced by. This means that when the pointer was freed we had no sane way to clean up the reference. I have now replaced ref_count with a "refs" list, which means that references point to the pointer, and the pointer has a linked list of references. So now we can cleanup from either direction without losing track of anything. I've also added a LOCAL-TALLOC smbtorture test that tests talloc behaviour for some common uses. (This used to be commit 911a8d590cb184bcb892810729955c2c4cf02550)
2007-10-10r2686: remove unused gtk+ checkStefan Metzmacher1-2/+0
metze (This used to be commit d1e8b340a9942553ec7f281affd11ea4315ac448)
2007-10-10r2684: Free the right talloc context (don't panic when encountering illegal ↵Jelmer Vernooij1-1/+1
multibyte sequences) (This used to be commit b90da2337b83eb261a8072f9d0b13ec28caf3c4d)
2007-10-10r2678: from_name and to_name aren't needed in smb_iconv_tAndrew Tridgell1-3/+0
(This used to be commit f3844cc0a5ad6b03f166435d44db02763df345d7)
2007-10-10r2677: - fixed a bug in the recursive logic talloc_free() when there areAndrew Tridgell1-21/+50
circular references (circular references are allowed, they just need to be handled carefully inside talloc) - mark talloc_reference() pointers nicely in the --leak-report-full code, so you see what has a reference to what in a useful manner (This used to be commit a87d3d11344069284604a7294a54cadcc6e1a096)
2007-10-10r2675: added a convenience functionAndrew Tridgell1-0/+35
void *talloc_reference(const void *context, const void *ptr); this function makes a secondary reference to ptr, and hangs it off the given context. This greatly simplifies some of the current reference counting code in the samr server and I suspect it will be widely used in other places too. the way you use it is like this: domain_state->connect_state = talloc_reference(domain_state, connect_state); that makes the element connect_state of domain_state a secondary reference to connect_state. The connect_state structure will then only be freed when both domain_state and the original connect_state go away, allowing you to free them independently and in any order. you could do this alrady using a talloc destructor, and that is what the samr server did previously, but that meant this construct was being reinvented in several places. So this convenience function sets up the destructor for you, giving a much more convenient and less error prone API. (This used to be commit dc5315086156644fad093cbe6b02d999adba8540)
2007-10-10r2674: I have realised that talloc() should have its context marked const, asAndrew Tridgell3-46/+96
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-10r2672: don't call a variable "dup" as that conflicts with a standard system ↵Andrew Tridgell1-3/+3
call name (This used to be commit 015db2ed8cdde6d6eb79857cb9b6d72185382acc)
2007-10-10r2671: we're getting too many errors caused by the talloc_realloc() API notAndrew Tridgell6-20/+18
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-10r2667: Remove forward declaration of static function from function. GCC 3.5 ↵Jelmer Vernooij1-2/+3
and 4.0 don't accept declarations of static functions inside other functions, see http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02514.html (This used to be commit 8768168aadf51b9559831954e349d9aa94101c41)
2007-10-10r2662: make --leak-check completely silent if not blocks are allocatedAndrew Tridgell1-0/+3
(This used to be commit 00518201754dc2de583267071ebd2adecbadcb59)
2007-10-10r2653: - data_blob() and data_blob_talloc() now get automatic namesAndrew Tridgell2-11/+17
- talloc_strdup() and related functions get automatic names (This used to be commit 0cf427d14fe0a19cb3e85b6191be220f3d81080a)
2007-10-10r2649: - used some cpp tricks to make users of talloc() and talloc_realloc()Andrew Tridgell2-7/+20
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-10r2646: - use a talloc destructor to ensure that sockets from the new socketAndrew Tridgell2-7/+27
library are closed on abnormal termination - convert the service.h structures to the new talloc methods (This used to be commit 2dc334a3284858eb1c7190f9687c9b6c879ecc9d)
2007-10-10r2644: removed an unused functionAndrew Tridgell1-18/+0
(This used to be commit bc779cb2ce6bc13157f9d046400ce99d107ccd52)