1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-16 00:23:52 +03:00
Commit Graph

19 Commits

Author SHA1 Message Date
Andrew Kroeger
d57792d67b When Windows attempts to create a new key, it looks for an available key name
starting with "New Key #1" and iterating up to "New Key #99" before giving up.
ldb_open_key() calls reg_path_to_ldb() to build the appropriate dn from the key
name.  reg_path_to_ldb() was not catching the error returned by
ldb_dn_add_base_fmt() due to the unescaped '#' character, causing the returned
dn to be that of the parent key, not the potential new key.  Additionally,
Windows expects a return value of WERR_BADFILE when a key does not exist, but
WERR_NOT_FOUND was being returned instead.  Correcting the building of the dn
and the providing the expected return value allows new key creation to succeed.

When attempting to delete a key, Windows passes the complete path to the key,
not just the name of the child key to be deleted.  Using reg_path_to_ldb() to
build the correct dn allows key deletion to succeed.
2008-01-18 03:41:59 +01:00
Jelmer Vernooij
1e31fcb8a0 registry: Improve error codes and update tests.
Rather than map the error returned by the registry to the correct error,
return the correct error in the first place.

Also deal with the fact that the right error code is now returned in a
couple of places.
2008-01-18 03:41:59 +01:00
Andrew Kroeger
94fb39cfd9 When Windows initially creates a new value, the value name is "New Value #1".
The '#' character was causing problems, as it was not being escaped for the dn,
but the failure returned by ldb_dn_add_child_fmt() was not being caught.  This
was causing the new value to be added on the parent key, not the current key.
When attempting to delete the new value (now on the parent key) the same
escaping error was returned by ldb_dn_add_child_fmt(), causing the delete to
delete the key and not the value.

When attempting to rename a value, Windows first tries to ensure the new name
does not already exist.  When a value does not exist, Windows expects a return
value of WERR_BADFILE, but WERR_NOT_FOUND was being returned instead.
Providing the WERR_BADFILE that Windows expects allows values to be renamed.
2008-01-18 03:41:59 +01:00
Andrew Kroeger
0ed6f1b162 registry: Properly check return values from ldb_*() functions.
There were a few cases left that attempted to detect errors from ldb_*()
function calls using "(ret < 0)".  As all LDB_* error codes are greater than
zero, there was no chance any errors would be detected.  Changed all such tests
to use "(ret != LDB_SUCCESS)".
2008-01-18 03:41:59 +01:00
Jelmer Vernooij
c8b22ef30c registry: Check for more specific LDB return codes, handle changing existing values better. 2008-01-18 03:41:59 +01:00
Jelmer Vernooij
9fc5f098e0 r26692: registry: Treat key and value names case-insensitively. 2008-01-07 17:48:02 -06:00
Jelmer Vernooij
b06896d237 r26689: registry: Return max_subkeynamelen, max_valnamelen and max_valbufsize in getkeyinfo(). 2008-01-07 08:18:07 -06:00
Jelmer Vernooij
12eb38e553 r26518: Fix provision of registry using Python. 2007-12-21 05:51:25 +01:00
Kai Blin
46dfa63d4f r26451: Janitorial: fix warnings in lib/registry/
This does not fix the discarded qualifier warnings in tests, as the test data
is currently passed as const. Jelmer wants to provide a test function that
passes non-const test data, thus allowing for a cleaner way to fix those
warnings.
2007-12-21 05:50:16 +01:00
Jelmer Vernooij
8242c69623 r26443: Remove global_loadparm instances. 2007-12-21 05:50:11 +01:00
Jelmer Vernooij
d37136b7ab r26429: Avoid use of global_smb_iconv_convenience. 2007-12-21 05:49:56 +01:00
Jelmer Vernooij
f6420d933b r26316: Use contexts for conversion functions. 2007-12-21 05:48:30 +01:00
Jelmer Vernooij
69157be9b1 r26263: Don't assume CH_UNIX is CH_UTF8. 2007-12-21 05:47:37 +01:00
Jelmer Vernooij
56dfcb4f2f r26003: Split up DB_WRAP, as first step in an attempt to sanitize dependencies. 2007-12-21 05:45:40 +01:00
Günther Deschner
0d9826dc54 r25544: Cleanup some more indents in lib/registry.
Guenther
2007-10-10 15:07:51 -05:00
Jelmer Vernooij
3468952e77 r25446: Merge some changes I made on the way home from SFO:
2007-09-29 More higher-level passing around of lp_ctx.
2007-09-29 Fix warning.
2007-09-29 Pass loadparm contexts on a higher level.
2007-09-29 Avoid using global loadparm context.
2007-10-10 15:07:34 -05:00
Jelmer Vernooij
527ea7fccf r24898: Fix LOCAL-REGISTRY, do not silently ignore testcase setup failures. 2007-10-10 15:03:33 -05:00
Jelmer Vernooij
7a7af62dc4 r24684: Be a bit less verbose 2007-10-10 15:02:42 -05:00
Jelmer Vernooij
7a1eec6358 r24667: Finally merge the registry improvements that Wilco Baan Hofman and I have
been working on for at least half a year now. Contains the following
improvements:

 * proper layering (finally!) for the registry library. Distinction is
   now made between 'real' backends (local, remote, wine, etc) and
   the low-level hive backends (regf, creg, ldb, ...) that are only used
   by the local registry backend
 * tests for all important hive and registry operations
 * re-enable RPC-WINREG tests (still needs more work though, as
							   some return values aren't checked yet)
 * write support for REGF files
 * dir backend now supports setting/reading values, creating keys
 * support for storing security descriptors
 * remove CREG backend as it was incomplete, didn't match the data model
   and wasn't used at all anyway
 * support for parsing ADM files as used by the policy editor (see lib/policy)
 * support for parsing PREG files (format used by .POL files)
 * new streaming interface for registry diffs (improves speed and memory usage
	for regdiff/regpatch significantly)

   ... and fixes a large number of bugs in the registry code
2007-10-10 15:02:34 -05:00