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

62 Commits

Author SHA1 Message Date
Andrew Tridgell
153cfb9c83 r23801: The FSF has moved around a lot. This fixes their Mass Ave address.
(This used to be commit 87c91e4362c51819032bfbebbb273c52e203b227)
2007-10-10 12:28:27 -05:00
Jeremy Allison
d824b98f80 r23779: Change from v2 or later to v3 or later.
Jeremy.
(This used to be commit 407e6e695b8366369b7c76af1ff76869b45347b3)
2007-10-10 12:28:20 -05:00
Jeremy Allison
72099d8f66 r23512: Fix conflict in #define for SECDESC_PREFIX. Ensure all
reg #defines use "REG_" prefix. Michael - please check
gcc warnings on compiles.
Jeremy.
(This used to be commit 7885b68bb5df0ebe290feca0e74b4a20ef59e718)
2007-10-10 12:23:23 -05:00
Michael Adam
aa4110e6f2 r23509: This activates the global options from the registry in loadparm.
The global options are stored as values in the subkey "global"
of the SMBCONF registry key.

The activation is accomplished in smb.conf though a new special
semantic of the "include" parameter: "include = registry" triggers
the processing of the registry global options exactly at the
position of the include statement. Options read from the registry
take the same precedence as parameters loaded from a file via
include. Need to reload the registry globals is detected by
watching the tdb sequence number.

Registry shares are automatically activated when the registry
globals are processed.

So a "registry only" configuration can be realized by an
smb.conf that looks as follows:

================================
[global]
include = registry
================================

The global options and registry shares can be conveniently
edited with the "net conf" utility.

Caveat:

A possible pitfall consists in using "include = registry"
together with the "lock directory" directive in the registry.
This problem will be addressed in the next time.

Note on the code:

Processing of the registry options is accomplished by a function
process_registry_globals() in loadparm.c The current version is
only an interim solution: It is handcoded instead of using the
infrastructure of reg_api.c. The reason for this is that using
reg_api still has too large linker dependencies, bloating virtually
all targets by PASSDB_OBJ, SMBLDAP_OBJ, GROUPDB_OBJ and LDB stuff.
A version of process_registry_globals that uses reg_api is
included but commented out. The goal is to eventually refactor
and restructure the registry code so that one can use the reg_api
to access only the registry tdb and not link all the dynamic
backends with all their linking implications.
(This used to be commit 24b0cbcb3741dd14b04728448a85cc04a057e7d0)
2007-10-10 12:23:23 -05:00
Michael Adam
43d59b7d42 r23507: Split one general function normalize_dbkey from reg_db.c into util_reg.c
(To be used in other place in subsequent commit.)

Michael
(This used to be commit 6fd71140499e30b8fd0f083301512db7b8c2f236)
2007-10-10 12:23:22 -05:00
Michael Adam
9bb19474d7 r23504: Use tdb_wrap_open (instead of usual tdb_open) in reg_db.
This eliminates the need of maintaining reg_db's own
reference counter for the tdb. Maybe as a next step...

Michael
(This used to be commit 31d64767fc8a73be1f6b81e2712d687897f812a0)
2007-10-10 12:23:22 -05:00
Michael Adam
a2762cfcaa r23468: Open registry.tdb with sequence number.
Add a function to retrieve the registry db sequence number.

This is in preparation of loadparm integration of registry global
smb.conf options: this will allow to detect changes in order to trigger reload.

Michael
(This used to be commit ebe2ea8f22bfe0855beee087af771c690db443c1)
2007-10-10 12:23:18 -05:00
Michael Adam
6f28dc588c r23460: Re-add whitespace to reduce diff between branches.
Sorry for the noise...

Michael
(This used to be commit c7d004dec4822c0d8e5c7fd6519850f906c7bb1a)
2007-10-10 12:23:17 -05:00
Michael Adam
00323dc738 r23459: Remove one superfluous cast.
(This used to be commit beed87550786052891969f6014088c17a5d77157)
2007-10-10 12:23:17 -05:00
Michael Adam
cb7f45560f r23458: Cosmetic fix in debug output.
(This used to be commit 03dbdb561a16a6e3dbd99ee29aac598457873002)
2007-10-10 12:23:17 -05:00
Michael Adam
774ceeea50 r23379: Whitespace cosmetics, to reduce irritating diffs...
Michael
(This used to be commit df30f8d5c2999590aabe1e87f92fbdbafa7052aa)
2007-10-10 12:23:11 -05:00
Stefan Metzmacher
bc2b6436d0 r22009: change TDB_DATA from char * to unsigned char *
and fix all compiler warnings in the users

metze
(This used to be commit 3a28443079c141a6ce8182c65b56ca210e34f37f)
2007-10-10 12:19:00 -05:00
Stefan Metzmacher
4d7c7bb689 r21978: make use of tdb_*_bystring()
to avoid creating the TDB_DATA struct from strings "by hand"

metze
(This used to be commit 1a0599d7aadef651e4d5b88b59c95e8a118dfa5e)
2007-10-10 12:18:55 -05:00
Stefan Metzmacher
3f370211a5 r21977: little cosmetic change to remove a local var that's not really needed
metze
(This used to be commit 71c3880e8924c57dcd60573d628b8eb29cee6055)
2007-10-10 12:18:54 -05:00
Volker Lendecke
08bf58d8fc r21219: Speed up the initial startup time of smbd on systems with loaded disk
subsystems. See the comment in the diff.

Volker
(This used to be commit 92fdb1193de8e7c857603e4fcd4a92b9a0a0f3bd)
2007-10-10 12:17:48 -05:00
Volker Lendecke
2494868ffb r20020: Arglll... eventlogadm links against reg_db but not the rest of the registry
stuff. Revert the last change.

This needs better fixing.

Volker
(This used to be commit ad1e00430bf5c4130023d30e9c8266ecdc640d2b)
2007-10-10 12:16:21 -05:00
Volker Lendecke
61bd0c8e45 r20019: Replace one set of tricky code by calls to another set of tricky code:
Initializing the reg_db now uses reg_createkey and reg_setvalue.

Volker
(This used to be commit cab5ccbbe484795f13531726d68b978073262e33)
2007-10-10 12:16:21 -05:00
Volker Lendecke
575845ccbe r19963: Add 'registry shares = yes' and registry key security descriptors.
(This used to be commit 6cab254c49e07b11c170511ec613f0f33914c3e6)
2007-10-10 12:16:16 -05:00
Volker Lendecke
7a19259051 r19841: Wrap regdb_store_keys and regdb_store_values in tdb transactions
(This used to be commit 5ec737922041b723b9e60c08049ace5fa2fa5dec)
2007-10-10 12:16:01 -05:00
Volker Lendecke
9e29e5d2b8 r19839: Fix the build, we are not there yet :-)
(This used to be commit ff4123c8f2e07e282800c166a4e00b1015ddd45c)
2007-10-10 12:16:01 -05:00
Volker Lendecke
45111ff1cb r19838: We have to delete the value record as well, otherwise the old values pop up
again if the key is re-created.

Volker
(This used to be commit f722f3341f65f8737c10eb59048c1263a58afd44)
2007-10-10 12:16:01 -05:00
Volker Lendecke
aad7194999 r19837: Some reformatting (Jerry, I hope you do not mind
(This used to be commit 6639f8c1190419e183d92ed0322e1026375717e6)
2007-10-10 12:16:01 -05:00
Volker Lendecke
02eea79624 r17333: Some C++ warnings
(This used to be commit be9aaffdaccae06c8c035eaf31862e34b7cfbe38)
2007-10-10 11:38:26 -05:00
Volker Lendecke
4f33673b41 r17047: Fix a typo and a possible NULL dereference
(This used to be commit c0d9114706345c6bc1fa392bbf9ee81b146cba85)
2007-10-10 11:19:22 -05:00
Volker Lendecke
db249de135 r14247: Fix Coverity bug # 136
(This used to be commit 1b247ff2ed380f5b7d28917d74d6ef5609330a45)
2007-10-10 11:15:20 -05:00
Jeremy Allison
894358a8f3 r13915: Fixed a very interesting class of realloc() bugs found by Coverity.
realloc can return NULL in one of two cases - (1) the realloc failed,
(2) realloc succeeded but the new size requested was zero, in which
case this is identical to a free() call.

The error paths dealing with these two cases should be different,
but mostly weren't. Secondly the standard idiom for dealing with
realloc when you know the new size is non-zero is the following :

 tmp = realloc(p, size);
 if (!tmp) {
    SAFE_FREE(p);
    return error;
 } else {
    p = tmp;
 }

However, there were *many* *many* places in Samba where we were
using the old (broken) idiom of :

 p = realloc(p, size)
 if (!p) {
    return error;
 }

which will leak the memory pointed to by p on realloc fail.

This commit (hopefully) fixes all these cases by moving to
a standard idiom of :

 p = SMB_REALLOC(p, size)
 if (!p) {
    return error;
 }

Where if the realloc returns null due to the realloc failing
or size == 0 we *guarentee* that the storage pointed to by p
has been freed. This allows me to remove a lot of code that
was dealing with the standard (more verbose) method that required
a tmp pointer. This is almost always what you want. When a
realloc fails you never usually want the old memory, you
want to free it and get into your error processing asap.

For the 11 remaining cases where we really do need to keep the
old pointer I have invented the new macro SMB_REALLOC_KEEP_OLD_ON_ERROR,
which can be used as follows :

 tmp = SMB_REALLOC_KEEP_OLD_ON_ERROR(p, size);
 if (!tmp) {
    SAFE_FREE(p);
    return error;
 } else {
    p = tmp;
 }

SMB_REALLOC_KEEP_OLD_ON_ERROR guarentees never to free the
pointer p, even on size == 0 or realloc fail. All this is
done by a hidden extra argument to Realloc(), BOOL free_old_on_error
which is set appropriately by the SMB_REALLOC and SMB_REALLOC_KEEP_OLD_ON_ERROR
macros (and their array counterparts).

It remains to be seen what this will do to our Coverity bug count :-).

Jeremy.
(This used to be commit 1d710d06a214f3f1740e80e0bffd6aab44aac2b0)
2007-10-10 11:10:59 -05:00
Gerald Carter
01a1e5cdb0 r10819: merging a couple of fixes from trunk
* only keep the registry,tdb file open when we have an open key handle
* tpot's setup.py fix
* removing files that no longer exist in trunk and copying some
  that were missing in 3.0
(This used to be commit 6c6bf6ca5fd430a7a20bf20ed08050328660e570)
2007-10-10 11:04:54 -05:00
Gerald Carter
54abd2aa66 r10656: BIG merge from trunk. Features not copied over
* \PIPE\unixinfo
* winbindd's {group,alias}membership new functions
* winbindd's lookupsids() functionality
* swat (trunk changes to be reverted as per discussion with Deryck)
(This used to be commit 939c3cb5d78e3a2236209b296aa8aba8bdce32d3)
2007-10-10 11:04:48 -05:00
Gerald Carter
926ebe50ff r9895: fix typo in registry path
(This used to be commit ef7e0d70c68976766c01e1212e2b8f48f6895f98)
2007-10-10 11:03:27 -05:00
Gerald Carter
790a29253c r9894: Add new registry key expected by Windows XP clients.
HKLM\\SYSTEM\\CurrentControlSet\\Control\\Termininal Server\\DefaultUserConfiguration

Apparently this started showing up after the winreg-write support
was added in 3.0.20rc1 or so.

Also modifed init_registry_data() to always run and add the
required keys.  Initial values however are only written if
they don't already exist.

This makes it easier to add new keys without having to rev the
tdb version number (which is really unnecessary in this case).

Portions of patch reviewed by Thomas Bork on the general samba ml.
(This used to be commit b12a05b23782cfcb93fb4811807ef388de97c95c)
2007-10-10 11:03:27 -05:00
Gerald Carter
44707ad2e0 r9739: conver the reg_objects (REGSUBKEY_CTR & REGVAL_CTR) to use
the new talloc() features:

 Note that the REGSUB_CTR and REGVAL_CTR objects *must* be talloc()'d
 since the methods use the object pointer as the talloc context for
 internal private data.

 There is no longer a regXXX_ctr_intit() and regXXX_ctr_destroy()
 pair of functions.  Simply TALLOC_ZERO_P() and TALLOC_FREE() the
 object.

Also had to convert the printer_info_2->NT_PRINTER_DATA field
to be talloc()'d as well.  This is just a stop on the road to
cleaning up the printer memory management.
(This used to be commit ef721333ab9639cb5346067497e99fbd0d4425dd)
2007-10-10 11:03:25 -05:00
Tim Potter
9a14b005a1 r9278: Remove unused variable. Bugzilla #2983.
(This used to be commit 5d592691e4d4f1cd47bd062633a54d7892548ee7)
2007-10-10 11:00:30 -05:00
Gerald Carter
30865196bf r9115: using #define for reg paths rather than typing the string
(This used to be commit e9427912a763b0e4bb47724f835b91c2252105e8)
2007-10-10 11:00:26 -05:00
Gerald Carter
6fe5451543 r8501: * disable printer handle object cache (was mostly used
for NT4 clients enumerating printer data on slow CPUs)
* fix pinter and secdesc record upgrade to normalize the key
  (rev'd printer tdb version)
* fixed problem that was normalizing the printername name field

in general, this should fix the issues upgrading print servers
from 3.0.14a to 3.0.20
(This used to be commit d07179de2f2a6eb1d13d0e25ac10de1a21475559)
2007-10-10 11:00:06 -05:00
Gerald Carter
2427e00b1d r8152: * remove commented out structure
* use SAMBA_PRINTER_PORT_NAME in registry values for builtin printer
  port
(This used to be commit 63bc03536b6d0622005448f0f7be2739e06a432a)
2007-10-10 10:58:12 -05:00
Gerald Carter
0a01b2246a r8064: * add the REG_XXX error codes to the pretty error messages
* more work on the store_values() functions for the Printers key
* add Control\Print\Monitors key to list for reg_db
(This used to be commit 89f17b41cee633838b8cbd0d1bf8119a4b8d707e)
2007-10-10 10:58:10 -05:00
Gerald Carter
8e3445c804 r8061: * mostly cleanup and refactoring for better readability
* move to registry.tdb for port listing (at least via the winreg ops)
  If no one opposes on the samba list, we'll move to a registry
  lookup for enumerating ports rather than the 'enumports command'.
  This means that there is a bit of a disconnect between EnumPorts() and
  RegEnumKey('hklm\software\microsoft\windows nt\currentversion\ports').
(This used to be commit 6f654c5741e98abf00c010c5dd38038092c0f7a3)
2007-10-10 10:58:10 -05:00
Gerald Carter
8cea99d3ac r8026: * more fixes to the printing registry interface
(still not completely back to the read functionality
  we previously had but the cleanup is progressing)
(This used to be commit 04431372a698433b4936392047228908a64ff382)
2007-10-10 10:58:09 -05:00
Gerald Carter
b319bdd32f r8007: * cleanup unused structure from reg_objects.h
* make regdb_store_XXX() and regdb_fetch_XXX() functions non-static
* use case sensitive string lookups in reg_dynamic.c since the
  keys have already been normalized
* move to new design for making printing related data available
  via the winreg pipe (with the intent of allowing writes)
(This used to be commit 28c7293ee9e68b913faf8d74d63f73e09087169b)
2007-10-10 10:58:08 -05:00
Gerald Carter
270b90e25f r7995: * privileges are local except when they're *not*
printmig.exe assumes that the LUID of the SeBackupPrivlege
  on the target server matches the LUID of the privilege
  on the local client.  Even though an LUID is never guaranteed
  to be the same across reboots.  How *awful*!  My cat could
  write better code! (more on my cat later....)

* Set the privelege LUID in the global PRIVS[] array

* Rename RegCreateKey() to RegCreateKeyEx() to better match MSDN

* Rename the unknown field in RegCreateKeyEx() to disposition
  (guess according to MSDN)

* Add the capability to define REG_TDB_ONLY for using the reg_db.c
  functions and stress the RegXXX() rpc functions.
(This used to be commit 0d6352da4800aabc04dfd7c65a6afe6af7cd2d4b)
2007-10-10 10:58:07 -05:00
Gerald Carter
ab0033d40a r7938: * move the hardcoded registry value names from _reg_query_value()
to a thin layer in fetch_reg_values().  Not entirely efficient
  seeing as the the dynamic value paths are stored in an unsorted
  array but it is one strequal() per path.  If this was really big
  it should be worked into the reghook_cache().
(This used to be commit 63b81ad3cb484090a181fbd13e04922a5c17e7d9)
2007-10-10 10:58:03 -05:00
Gerald Carter
bd509a81cb r7908: * change REGISTRY_HOOK api to use const (fix compiler warning
in init_registry_data()
* Add means of storing registry values in registry.tdb
* add builtin_registry_values[] array for REG_DWORD and REG_SZ
  values needed during startup
* Finish up RegDeleteValue() and RegSetValue()
* Finish up regdb_store_reg_values() and regdb_fetch_reg_values()

I can now create and retrieve values using regedit.exe on Win2k.

bin/net -S rain -U% rpc registry enumerate 'hklm\software\samba'
Valuename  = Version
Type       = REG_SZ
Data       = 3.0.20

Next is to do the virtual writes in reg_printing.c and I'll be
done with Print Migrator (yeah!  finally)
(This used to be commit 3d837e58db9ded64d6b85f047012c7d487be4627)
2007-10-10 10:58:03 -05:00
Gerald Carter
b8e787bcac r7890: * add Reg[SG]etKeySec() server stubs
* merge a compile warning fix from trunk to SAMBA_3_0
(This used to be commit 71eb018a05c5012fbd42ba6817aabc0797d38ba1)
2007-10-10 10:58:01 -05:00
Gerald Carter
c25b67b24d r7698: * clean upserver frontend for RegDeleteKey()
* implement RegDeleteKey() for reg_db backend
(This used to be commit 91b81a23b8e2a096747e02fd9392ef590e7f0d61)
2007-10-10 10:57:19 -05:00
Gerald Carter
fee4b03e02 r7692: start versioning the registry.tdb file since it can be modified now
(This used to be commit a091b37d59d1e0228a9c8d4bd2a31e9bbaafde99)
2007-10-10 10:57:19 -05:00
Gerald Carter
2129d3c711 r7691: * add .gdbinit to the svn:ignore files
* start adding write support to the Samba registry
  Flesh out the server implementations of
  RegCreateKey(), RegSetValue(), RegDeleteKey() and RegDeleteValue()

I can create a new key using regedit.exe now but the 'New Key #1'
key cannot be deleted yet.
(This used to be commit e188fdbef8f0ad202b0ecf3c30be2941ebe6d5b1)
2007-10-10 10:57:19 -05:00
Gerald Carter
17eb05228e r7648: adding REGISTRY_HOOK->reg_access_check() for authprization checks on RegOpenKey(); passing it off to the backend code for a given path
(This used to be commit 867fd3052bbfdd45856886999619e2ebc6552675)
2007-10-10 10:57:18 -05:00
Gerald Carter
f0c650a382 r6942: * merging the registry changes back to the 3.0 tree
* removing the testprns tool
(This used to be commit 81ffb0dbbbd244623507880c323a3c37e2b8dc4d)
2007-10-10 10:56:57 -05:00
Gerald Carter
cf4005a78d r6680: event log patches from Marcin
(This used to be commit a71e104af84810f488f42cb0843976961e6f6ebe)
2007-10-10 10:56:51 -05:00
Gerald Carter
466a825ce7 r6232: more cleanups; remove BUFFER3; rename BUFFER4 -> RPC_DATA_BLOB; rename REG_CREATE_VALE -> REG_SET_VALUE
(This used to be commit 28d433351cf813c7fb57ebac0e0f4973c85f73e8)
2007-10-10 10:56:30 -05:00