The branch, master has been updated via af2cbaa... s3:registry: add C for substantial changes to reg_objects via 80293b8... s3:registry:reg_objects: Remove use of uint{8,16,32} in favour of C99 types via 0b446e0... s3:registry: add comment header block to registry.h via 0fe1ff9... s3:registry: move reg_objects.h to registry/ and use it only where needed via 552e505... s3:registry: move non-reg_objects definitions from reg_objects.h to registry.h via 75e691a... s3:registry: hide definition of regval_ctr and regval_blob in reg_objects.c via 0e8e5d5... s3:net rpc registry: use regval_ctr_init() instead of direct allocation via bf65ff5... s3:profiles: use regval_ctr_init() instead of direct allocation via 7b2f5f2... s3:rpcclient:spoolss: use regval_ctr/blob accessor functions. via 112eddf... s3:net_rpc_printer: use regval_blob/ctr accessor functions via c4de07a... s3:net rpc printer: fix use of a possibly uninitialized variable via b5d0fdd... s3:nt_printing: use regval_ctr_init(). via dcf2cc2... s3:srv_ntsvcs: use regval_ctr/blob accessor functions via 1be8f5f... s3:services_db: use regval_ctr_init() instead of direct allocation via 53ba74e... s3:libads:use regval_ctr/blob accessor functions in ldap_printer.c via 5fbf935... s3:registry: use regval_ctr/blob accessor functoin in reg_eventlog.c via a71dac4... s3:registry: user regval_ctr/blob accessor functions in reg_backend_db.c via 0d20053... s3:registry: use regval_ctr/blob accessor functions in reg_api.c via 987514d... s3:registry:reg_objects: add regval_ctr_set_seqnum() via 6b33132... s3:registry:reg_objects: add regval_ctr_get_seqnum() via e0d5bcc... s3:registry:reg_objects: add regval_ctr_init() via 97846ed... s3:registry: move definition of registry_hook to reg_init_full.c - it's only user via e829b42... s3:registry: extract registry_pull/push_value prototypes into own header via 36b74e0... s3:registry: rename lib/util_reg_api.c to registry/reg_util_marshalling.c via 773255b... s3:registry: rename reg_util.{c,h} to reg_util_internal.{c,h} via f305373... s3:registry: move prototype registry_create_admin_token() to new header reg_util_token.h via e3f7fab... s3:registry: move registry_create_admin_token() to new reg_util_token.c via 847a19d... s3:registry: extract reg_eventlog prototypes to header of their own via 5a92d88... s3:registry: extract reg_perfcount prototypes into header of their own. via b94267a... s3:registry: extraxt the reg_dispatcher prototypes into their own header. via d335f29... s3:registry: extract the reg_backend_db prototypes into their own header. via 9ccf663... s3:registry: adapt callers of regval_ctr_addvalue to uint8 * instead of char * via 70a8179... s3:registry: fix regval_ctr_addvalue() to take data as uint8 *, not char *. via f7f9ce3... s3:registry: fix data_p arg of regval_compose to be uint8 * instead of char * via 4ae77b2... s3:registry: extract the reg_util prototypes into their own header. via c682fd6... s3:registry: remove superfluous comments from registry.h via a4efda9... s3:registry: extract the reg_util_legacy prototypes into their own header. via 14a0250... s3:registry: extract the reg_cachehook prototypes into their own header. via 9c5d7c7... s3:registry: protect registry.h from multiple inclusion via d59d9df... s3:registry: add C to reg_cachehook, confessing considerable changes in 2008 from 8eed328... s3:fix configure after change "add Werror_FLAGS for IBM's xlc"
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit af2cbaa700f8a56228131061ad10a1d219df1d83 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 10:53:17 2010 +0200 s3:registry: add C for substantial changes to reg_objects commit 80293b80670d5106d1aa8822c2de081f7caecb64 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 10:32:51 2010 +0200 s3:registry:reg_objects: Remove use of uint{8,16,32} in favour of C99 types commit 0b446e0842a9e79dcc290aa0841e56e0b0d2c495 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 08:54:29 2010 +0200 s3:registry: add comment header block to registry.h commit 0fe1ff99a1aa6858ec0f1cfb1130b801238fc8e2 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 01:00:37 2010 +0200 s3:registry: move reg_objects.h to registry/ and use it only where needed Every place outside of registry/ where this is used, should probably be changed to use pure reg_api.c code. commit 552e505cee966e7f734fb6bc8f5991bb5b73ba32 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 00:42:50 2010 +0200 s3:registry: move non-reg_objects definitions from reg_objects.h to registry.h commit 75e691ae6baeac88878e2c8107ceb7e057fd4c5b Author: Michael Adam <ob...@samba.org> Date: Mon May 24 00:05:26 2010 +0200 s3:registry: hide definition of regval_ctr and regval_blob in reg_objects.c commit 0e8e5d5d6e7a1ab54cd108d70ade6aa884effe8f Author: Michael Adam <ob...@samba.org> Date: Mon May 24 15:10:48 2010 +0200 s3:net rpc registry: use regval_ctr_init() instead of direct allocation commit bf65ff5ea2b84f3f5406d840f759da87e146cc3a Author: Michael Adam <ob...@samba.org> Date: Mon May 24 15:08:58 2010 +0200 s3:profiles: use regval_ctr_init() instead of direct allocation commit 7b2f5f20daded43705f4321acf1b9311fa0fe6d4 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 15:07:47 2010 +0200 s3:rpcclient:spoolss: use regval_ctr/blob accessor functions. commit 112eddf107de7910224e5854fda9fea2bfd11087 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 14:48:31 2010 +0200 s3:net_rpc_printer: use regval_blob/ctr accessor functions commit c4de07a2597911e71b763a00ca7c72b68128fdbb Author: Michael Adam <ob...@samba.org> Date: Mon May 24 14:18:21 2010 +0200 s3:net rpc printer: fix use of a possibly uninitialized variable commit b5d0fdd96c835281378d21a7dc73b1fd8f100d9f Author: Michael Adam <ob...@samba.org> Date: Mon May 24 14:08:01 2010 +0200 s3:nt_printing: use regval_ctr_init(). commit dcf2cc2806bcccef42adf84c8a60e875bc49efdf Author: Michael Adam <ob...@samba.org> Date: Mon May 24 14:06:20 2010 +0200 s3:srv_ntsvcs: use regval_ctr/blob accessor functions commit 1be8f5fba4d5059a43732e2ad65ab269132bd205 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 14:03:46 2010 +0200 s3:services_db: use regval_ctr_init() instead of direct allocation commit 53ba74ecee5ac0cb75f51f3af9f0c62119ed5367 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 13:57:35 2010 +0200 s3:libads:use regval_ctr/blob accessor functions in ldap_printer.c commit 5fbf935ffce6204843fc498afd02dc3ba1dd9ff5 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 23:59:34 2010 +0200 s3:registry: use regval_ctr/blob accessor functoin in reg_eventlog.c commit a71dac488233a9d95df32361d10d96dde951988c Author: Michael Adam <ob...@samba.org> Date: Sun May 23 23:58:28 2010 +0200 s3:registry: user regval_ctr/blob accessor functions in reg_backend_db.c commit 0d20053f101f21f584f5bf5562ffc767979081db Author: Michael Adam <ob...@samba.org> Date: Sun May 23 23:56:40 2010 +0200 s3:registry: use regval_ctr/blob accessor functions in reg_api.c commit 987514d98d3cb8711b5c56b5416fa690ecb3b8eb Author: Michael Adam <ob...@samba.org> Date: Sun May 23 22:55:12 2010 +0200 s3:registry:reg_objects: add regval_ctr_set_seqnum() commit 6b331321e3d2bdf67c7acd63138b62fcf7cc5208 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 22:53:44 2010 +0200 s3:registry:reg_objects: add regval_ctr_get_seqnum() commit e0d5bccfd381ebb83ee7d626ee94087d47f4b8dd Author: Michael Adam <ob...@samba.org> Date: Sun May 23 22:47:53 2010 +0200 s3:registry:reg_objects: add regval_ctr_init() commit 97846edfa59b95572d176981bb4bab6a5c06b61c Author: Michael Adam <ob...@samba.org> Date: Tue May 25 00:31:01 2010 +0200 s3:registry: move definition of registry_hook to reg_init_full.c - it's only user commit e829b42978d91cf8a5ec67cd322e66a538f7fd75 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 00:15:52 2010 +0200 s3:registry: extract registry_pull/push_value prototypes into own header reg_util_marshalling.h and use them only where needed. commit 36b74e03cfec6bb5aaa7c3909c115629f0b076b1 Author: Michael Adam <ob...@samba.org> Date: Tue May 25 00:08:15 2010 +0200 s3:registry: rename lib/util_reg_api.c to registry/reg_util_marshalling.c commit 773255ba504201e5ec1c34dbe30f40fd2bc0447d Author: Michael Adam <ob...@samba.org> Date: Tue May 25 00:04:13 2010 +0200 s3:registry: rename reg_util.{c,h} to reg_util_internal.{c,h} commit f3053739b7e62e4749821bf2283d67ec379b1abc Author: Michael Adam <ob...@samba.org> Date: Mon May 24 23:37:09 2010 +0200 s3:registry: move prototype registry_create_admin_token() to new header reg_util_token.h and use it only where necessary. commit e3f7fab668c1bf1366257f64a5099cca919ca358 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 23:27:57 2010 +0200 s3:registry: move registry_create_admin_token() to new reg_util_token.c commit 847a19df946432558e75a6f81f0a761407114f45 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 23:06:27 2010 +0200 s3:registry: extract reg_eventlog prototypes to header of their own and use them only where needed. commit 5a92d88f38dc9fc65db7e6451eae2d22da04463e Author: Michael Adam <ob...@samba.org> Date: Mon May 24 22:59:04 2010 +0200 s3:registry: extract reg_perfcount prototypes into header of their own. And use them only when necessary. commit b94267aa3f83ec604e8b242006e09ecf4f7d5e57 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 22:49:42 2010 +0200 s3:registry: extraxt the reg_dispatcher prototypes into their own header. And use them only where needed. commit d335f292ce10824d483eff8d34fb0444e3d91f23 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 22:42:00 2010 +0200 s3:registry: extract the reg_backend_db prototypes into their own header. And use them only where needed. commit 9ccf66379a946cef87d915c5f0f7758adb11a4d6 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 22:19:17 2010 +0200 s3:registry: adapt callers of regval_ctr_addvalue to uint8 * instead of char * commit 70a81796fca29d3e924ab6a9396b1a4ab344a730 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 15:15:33 2010 +0200 s3:registry: fix regval_ctr_addvalue() to take data as uint8 *, not char *. commit f7f9ce30caa838f8408faa4bddcaebe2e266a0e4 Author: Michael Adam <ob...@samba.org> Date: Mon May 24 15:00:29 2010 +0200 s3:registry: fix data_p arg of regval_compose to be uint8 * instead of char * commit 4ae77b2ef9ef5f936055b03a7fb96231a069683b Author: Michael Adam <ob...@samba.org> Date: Sun May 23 16:11:13 2010 +0200 s3:registry: extract the reg_util prototypes into their own header. And use them only where needed. commit c682fd65b20e6b17150b3a57bebb222767c60796 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 16:00:35 2010 +0200 s3:registry: remove superfluous comments from registry.h commit a4efda959af36e0611c5204852dc1eea3f0310bf Author: Michael Adam <ob...@samba.org> Date: Sun May 23 15:57:27 2010 +0200 s3:registry: extract the reg_util_legacy prototypes into their own header. And use them only where necessary. commit 14a025062ee2923aac4f9e57c05a9004ddf55856 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 15:25:00 2010 +0200 s3:registry: extract the reg_cachehook prototypes into their own header. And use them only where necessary. commit 9c5d7c789664d15017a837ad735b79e3b0ea4479 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 13:32:08 2010 +0200 s3:registry: protect registry.h from multiple inclusion commit d59d9dfb90c67a5332ca76f38702ba6bacc0da76 Author: Michael Adam <ob...@samba.org> Date: Sun May 23 13:28:05 2010 +0200 s3:registry: add C to reg_cachehook, confessing considerable changes in 2008 ----------------------------------------------------------------------- Summary of changes: source3/Makefile.in | 8 +- source3/include/reg_objects.h | 206 ------------------ source3/include/registry.h | 271 +++++++++++++----------- source3/lib/smbconf/smbconf_reg.c | 2 + source3/lib/util_reg_api.c | 215 ------------------- source3/libads/ldap_printer.c | 77 ++++--- source3/libgpo/gpo_reg.c | 1 + source3/printing/nt_printing.c | 14 +- source3/registry/reg_api.c | 81 ++++--- source3/registry/reg_backend_current_version.c | 2 + source3/registry/reg_backend_db.c | 27 ++- source3/registry/reg_backend_db.h | 41 ++++ source3/registry/reg_backend_hkpt_params.c | 6 +- source3/registry/reg_backend_netlogon_params.c | 3 +- source3/registry/reg_backend_perflib.c | 15 +- source3/registry/reg_backend_printing.c | 39 ++-- source3/registry/reg_backend_prod_options.c | 1 + source3/registry/reg_backend_shares.c | 1 + source3/registry/reg_backend_tcpip_params.c | 1 + source3/registry/reg_cachehook.c | 2 + source3/registry/reg_cachehook.h | 29 +++ source3/registry/reg_dispatcher.c | 1 + source3/registry/reg_dispatcher.h | 44 ++++ source3/registry/reg_eventlog.c | 37 ++-- source3/registry/reg_eventlog.h | 29 +++ source3/registry/reg_init_basic.c | 2 + source3/registry/reg_init_full.c | 9 + source3/registry/reg_init_smbconf.c | 40 +---- source3/registry/reg_objects.c | 99 +++++++-- source3/registry/reg_objects.h | 76 +++++++ source3/registry/reg_perfcount.c | 1 + source3/registry/reg_perfcount.h | 33 +++ source3/registry/reg_util.c | 161 -------------- source3/registry/reg_util_internal.c | 162 ++++++++++++++ source3/registry/reg_util_internal.h | 29 +++ source3/registry/reg_util_legacy.c | 1 + source3/registry/reg_util_legacy.h | 45 ++++ source3/registry/reg_util_marshalling.c | 216 +++++++++++++++++++ source3/registry/reg_util_marshalling.h | 32 +++ source3/registry/reg_util_token.c | 59 +++++ source3/registry/reg_util_token.h | 26 +++ source3/rpc_server/srv_ntsvcs_nt.c | 11 +- source3/rpc_server/srv_spoolss_nt.c | 1 + source3/rpc_server/srv_svcctl_nt.c | 1 + source3/rpc_server/srv_winreg_nt.c | 2 + source3/rpcclient/cmd_spoolss.c | 41 +++-- source3/services/services_db.c | 34 ++- source3/utils/eventlogadm.c | 2 + source3/utils/net_registry.c | 1 + source3/utils/net_rpc_printer.c | 94 +++++---- source3/utils/net_rpc_registry.c | 7 +- source3/utils/profiles.c | 7 +- 52 files changed, 1376 insertions(+), 969 deletions(-) delete mode 100644 source3/include/reg_objects.h delete mode 100644 source3/lib/util_reg_api.c create mode 100644 source3/registry/reg_backend_db.h create mode 100644 source3/registry/reg_cachehook.h create mode 100644 source3/registry/reg_dispatcher.h create mode 100644 source3/registry/reg_eventlog.h create mode 100644 source3/registry/reg_objects.h create mode 100644 source3/registry/reg_perfcount.h delete mode 100644 source3/registry/reg_util.c create mode 100644 source3/registry/reg_util_internal.c create mode 100644 source3/registry/reg_util_internal.h create mode 100644 source3/registry/reg_util_legacy.h create mode 100644 source3/registry/reg_util_marshalling.c create mode 100644 source3/registry/reg_util_marshalling.h create mode 100644 source3/registry/reg_util_token.c create mode 100644 source3/registry/reg_util_token.h Changeset truncated at 500 lines: diff --git a/source3/Makefile.in b/source3/Makefile.in index f895374..5465e8b 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -561,7 +561,8 @@ LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_lsa.o \ # registry-related objects # UTIL_REG_OBJ = ../libcli/registry/util_reg.o -UTIL_REG_API_OBJ = lib/util_reg_api.o + +REG_UTIL_MARSHALLING_OBJ = registry/reg_util_marshalling.o REG_INIT_BASIC_OBJ = registry/reg_init_basic.o REG_INIT_SMBCONF_OBJ = registry/reg_init_smbconf.o @@ -589,13 +590,14 @@ REG_BASE_OBJ = registry/reg_api.o \ registry/reg_cachehook.o \ $(REGFIO_OBJ) \ $(REGOBJS_OBJ) \ - registry/reg_util.o \ - $(UTIL_REG_API_OBJ) \ + registry/reg_util_internal.o \ + $(REG_UTIL_MARSHALLING_OBJ) \ lib/util_nttoken.o \ $(REG_BACKENDS_BASE_OBJ) \ $(REG_INIT_BASIC_OBJ) REG_SMBCONF_OBJ = $(REG_BASE_OBJ) \ + registry/reg_util_token.o \ $(REG_BACKENDS_SMBCONF_OBJ) \ $(REG_INIT_SMBCONF_OBJ) diff --git a/source3/include/reg_objects.h b/source3/include/reg_objects.h deleted file mode 100644 index 761bb49..0000000 --- a/source3/include/reg_objects.h +++ /dev/null @@ -1,206 +0,0 @@ -/* - Samba's Internal Registry objects - - SMB parameters and setup - Copyright (C) Gerald Carter 2002-2006. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _REG_OBJECTS_H /* _REG_OBJECTS_H */ -#define _REG_OBJECTS_H - -/* low level structure to contain registry values */ - -struct regval_blob { - fstring valuename; - uint16 type; - /* this should be encapsulated in an RPC_DATA_BLOB */ - uint32 size; /* in bytes */ - uint8 *data_p; -}; - -/* - * A REG_SZ string is not necessarily NULL terminated. When retrieving it from - * the net, we guarantee this however. A server might want to push it without - * the terminator though. - */ - -struct registry_string { - size_t len; - char *str; -}; - -struct registry_value { - enum winreg_Type type; - union { - uint32 dword; - uint64 qword; - struct registry_string sz; - struct { - uint32 num_strings; - char **strings; - } multi_sz; - DATA_BLOB binary; - } v; -}; - -/* container for registry values */ - -struct regval_ctr { - uint32 num_values; - struct regval_blob **values; - int seqnum; -}; - -/* container for registry subkey names */ - -struct regsubkey_ctr; - -/* - * - * Macros that used to reside in rpc_reg.h - * - */ - -#define HKEY_CLASSES_ROOT 0x80000000 -#define HKEY_CURRENT_USER 0x80000001 -#define HKEY_LOCAL_MACHINE 0x80000002 -#define HKEY_USERS 0x80000003 -#define HKEY_PERFORMANCE_DATA 0x80000004 - -#define KEY_HKLM "HKLM" -#define KEY_HKU "HKU" -#define KEY_HKCC "HKCC" -#define KEY_HKCR "HKCR" -#define KEY_HKPD "HKPD" -#define KEY_HKPT "HKPT" -#define KEY_HKPN "HKPN" -#define KEY_HKCU "HKCU" -#define KEY_HKDD "HKDD" -#define KEY_SERVICES "HKLM\\SYSTEM\\CurrentControlSet\\Services" -#define KEY_EVENTLOG "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog" -#define KEY_SHARES "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares" -#define KEY_NETLOGON_PARAMS "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters" -#define KEY_TCPIP_PARAMS "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters" -#define KEY_PROD_OPTIONS "HKLM\\SYSTEM\\CurrentControlSet\\Control\\ProductOptions" -#define KEY_PRINTING "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print" -#define KEY_PRINTING_2K "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers" -#define KEY_PRINTING_PORTS "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports" -#define KEY_CURRENT_VERSION "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" -#define KEY_PERFLIB "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib" -#define KEY_PERFLIB_009 "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009" -#define KEY_GROUP_POLICY "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Group Policy" -#define KEY_WINLOGON "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon" -#define KEY_SMBCONF "HKLM\\SOFTWARE\\Samba\\smbconf" -#define KEY_SAMBA_GROUP_POLICY "HKLM\\SOFTWARE\\Samba\\Group Policy" -#define KEY_TREE_ROOT "" - -#define KEY_GP_MACHINE_POLICY "HKLM\\Software\\Policies" -#define KEY_GP_MACHINE_WIN_POLICY "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies" -#define KEY_GP_USER_POLICY "HKCU\\Software\\Policies" -#define KEY_GP_USER_WIN_POLICY "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies" -/* - * Registry key types - * Most keys are going to be GENERIC -- may need a better name? - * HKPD and HKPT are used by reg_perfcount.c - * they are special keys that contain performance data - */ -#define REG_KEY_GENERIC 0 -#define REG_KEY_HKPD 1 -#define REG_KEY_HKPT 2 - -/* - * container for function pointers to enumeration routines - * for virtual registry view - */ - -struct registry_ops { - /* functions for enumerating subkeys and values */ - int (*fetch_subkeys)( const char *key, struct regsubkey_ctr *subkeys); - int (*fetch_values) ( const char *key, struct regval_ctr *val ); - bool (*store_subkeys)( const char *key, struct regsubkey_ctr *subkeys ); - WERROR (*create_subkey)(const char *key, const char *subkey); - WERROR (*delete_subkey)(const char *key, const char *subkey); - bool (*store_values)( const char *key, struct regval_ctr *val ); - bool (*reg_access_check)( const char *keyname, uint32 requested, - uint32 *granted, - const NT_USER_TOKEN *token ); - WERROR (*get_secdesc)(TALLOC_CTX *mem_ctx, const char *key, - struct security_descriptor **psecdesc); - WERROR (*set_secdesc)(const char *key, - struct security_descriptor *sec_desc); - bool (*subkeys_need_update)(struct regsubkey_ctr *subkeys); - bool (*values_need_update)(struct regval_ctr *values); -}; - -struct registry_hook { - const char *keyname; /* full path to name of key */ - struct registry_ops *ops; /* registry function hooks */ -}; - - -/* structure to store the registry handles */ - -struct registry_key_handle { - uint32 type; - char *name; /* full name of registry key */ - uint32 access_granted; - struct registry_ops *ops; -}; - -struct registry_key { - struct registry_key_handle *key; - struct regsubkey_ctr *subkeys; - struct regval_ctr *values; - struct nt_user_token *token; -}; - -/* The following definitions come from registry/reg_objects.c */ - -WERROR regsubkey_ctr_init(TALLOC_CTX *mem_ctx, struct regsubkey_ctr **ctr); -WERROR regsubkey_ctr_reinit(struct regsubkey_ctr *ctr); -WERROR regsubkey_ctr_set_seqnum(struct regsubkey_ctr *ctr, int seqnum); -int regsubkey_ctr_get_seqnum(struct regsubkey_ctr *ctr); -WERROR regsubkey_ctr_addkey( struct regsubkey_ctr *ctr, const char *keyname ); -WERROR regsubkey_ctr_delkey( struct regsubkey_ctr *ctr, const char *keyname ); -bool regsubkey_ctr_key_exists( struct regsubkey_ctr *ctr, const char *keyname ); -int regsubkey_ctr_numkeys( struct regsubkey_ctr *ctr ); -char* regsubkey_ctr_specific_key( struct regsubkey_ctr *ctr, uint32 key_index ); -int regval_ctr_numvals(struct regval_ctr *ctr); -struct regval_blob* dup_registry_value(struct regval_blob *val); -void free_registry_value(struct regval_blob *val); -uint8* regval_data_p(struct regval_blob *val); -uint32 regval_size(struct regval_blob *val); -char* regval_name(struct regval_blob *val); -uint32 regval_type(struct regval_blob *val); -struct regval_blob* regval_ctr_specific_value(struct regval_ctr *ctr, - uint32 idx); -bool regval_ctr_key_exists(struct regval_ctr *ctr, const char *value); -struct regval_blob *regval_compose(TALLOC_CTX *ctx, const char *name, - uint16 type, - const char *data_p, size_t size); -int regval_ctr_addvalue(struct regval_ctr *ctr, const char *name, uint16 type, - const char *data_p, size_t size); -int regval_ctr_addvalue_sz(struct regval_ctr *ctr, const char *name, const char *data); -int regval_ctr_addvalue_multi_sz(struct regval_ctr *ctr, const char *name, const char **data); -int regval_ctr_copyvalue(struct regval_ctr *ctr, struct regval_blob *val); -int regval_ctr_delvalue(struct regval_ctr *ctr, const char *name); -struct regval_blob* regval_ctr_getvalue(struct regval_ctr *ctr, - const char *name); -uint32 regval_dword(struct regval_blob *val); -const char *regval_sz(struct regval_blob *val); - - -#endif /* _REG_OBJECTS_H */ diff --git a/source3/include/registry.h b/source3/include/registry.h index 5644819..703176f 100644 --- a/source3/include/registry.h +++ b/source3/include/registry.h @@ -1,4 +1,152 @@ -#include "reg_objects.h" +/* + * Unix SMB/CIFS implementation. + * Virtual Windows Registry Layer + * + * Copyright (C) Gerald Carter 2002-2005 + * Copyright (C) Volker Lendecke 2006 + * Copyright (C) Michael Adam 2006-2010 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _REGISTRY_H +#define _REGISTRY_H + +/* + * A REG_SZ string is not necessarily NULL terminated. When retrieving it from + * the net, we guarantee this however. A server might want to push it without + * the terminator though. + */ + +struct registry_string { + size_t len; + char *str; +}; + +struct registry_value { + enum winreg_Type type; + union { + uint32 dword; + uint64 qword; + struct registry_string sz; + struct { + uint32 num_strings; + char **strings; + } multi_sz; + DATA_BLOB binary; + } v; +}; + +/* forward declarations. definitions in reg_objects.c */ +struct regval_ctr; +struct regsubkey_ctr; + +/* + * container for function pointers to enumeration routines + * for virtual registry view + */ + +struct registry_ops { + /* functions for enumerating subkeys and values */ + int (*fetch_subkeys)( const char *key, struct regsubkey_ctr *subkeys); + int (*fetch_values) ( const char *key, struct regval_ctr *val ); + bool (*store_subkeys)( const char *key, struct regsubkey_ctr *subkeys ); + WERROR (*create_subkey)(const char *key, const char *subkey); + WERROR (*delete_subkey)(const char *key, const char *subkey); + bool (*store_values)( const char *key, struct regval_ctr *val ); + bool (*reg_access_check)( const char *keyname, uint32 requested, + uint32 *granted, + const NT_USER_TOKEN *token ); + WERROR (*get_secdesc)(TALLOC_CTX *mem_ctx, const char *key, + struct security_descriptor **psecdesc); + WERROR (*set_secdesc)(const char *key, + struct security_descriptor *sec_desc); + bool (*subkeys_need_update)(struct regsubkey_ctr *subkeys); + bool (*values_need_update)(struct regval_ctr *values); +}; + +/* structure to store the registry handles */ + +struct registry_key_handle { + uint32 type; + char *name; /* full name of registry key */ + uint32 access_granted; + struct registry_ops *ops; +}; + +struct registry_key { + struct registry_key_handle *key; + struct regsubkey_ctr *subkeys; + struct regval_ctr *values; + struct nt_user_token *token; +}; + + +/* + * + * Macros that used to reside in rpc_reg.h + * + */ + +#define HKEY_CLASSES_ROOT 0x80000000 +#define HKEY_CURRENT_USER 0x80000001 +#define HKEY_LOCAL_MACHINE 0x80000002 +#define HKEY_USERS 0x80000003 +#define HKEY_PERFORMANCE_DATA 0x80000004 + +#define KEY_HKLM "HKLM" +#define KEY_HKU "HKU" +#define KEY_HKCC "HKCC" +#define KEY_HKCR "HKCR" +#define KEY_HKPD "HKPD" +#define KEY_HKPT "HKPT" +#define KEY_HKPN "HKPN" +#define KEY_HKCU "HKCU" +#define KEY_HKDD "HKDD" +#define KEY_SERVICES "HKLM\\SYSTEM\\CurrentControlSet\\Services" +#define KEY_EVENTLOG "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog" +#define KEY_SHARES "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares" +#define KEY_NETLOGON_PARAMS "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters" +#define KEY_TCPIP_PARAMS "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters" +#define KEY_PROD_OPTIONS "HKLM\\SYSTEM\\CurrentControlSet\\Control\\ProductOptions" +#define KEY_PRINTING "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print" +#define KEY_PRINTING_2K "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers" +#define KEY_PRINTING_PORTS "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports" +#define KEY_CURRENT_VERSION "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" +#define KEY_PERFLIB "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib" +#define KEY_PERFLIB_009 "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009" +#define KEY_GROUP_POLICY "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Group Policy" +#define KEY_WINLOGON "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon" +#define KEY_SMBCONF "HKLM\\SOFTWARE\\Samba\\smbconf" +#define KEY_SAMBA_GROUP_POLICY "HKLM\\SOFTWARE\\Samba\\Group Policy" +#define KEY_TREE_ROOT "" + +#define KEY_GP_MACHINE_POLICY "HKLM\\Software\\Policies" +#define KEY_GP_MACHINE_WIN_POLICY "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies" +#define KEY_GP_USER_POLICY "HKCU\\Software\\Policies" +#define KEY_GP_USER_WIN_POLICY "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies" + +/* + * Registry key types + * Most keys are going to be GENERIC -- may need a better name? + * HKPD and HKPT are used by reg_perfcount.c + * they are special keys that contain performance data + */ +#define REG_KEY_GENERIC 0 +#define REG_KEY_HKPD 1 +#define REG_KEY_HKPT 2 + /* The following definitions come from registry/reg_api.c */ @@ -53,86 +201,6 @@ WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path, WERROR reg_delete_path(const struct nt_user_token *token, const char *orig_path); -/* The following definitions come from registry/reg_backend_current_version.c */ - - -/* The following definitions come from registry/reg_backend_db.c */ - -WERROR init_registry_key(const char *add_path); -WERROR init_registry_data(void); -WERROR regdb_init(void); -WERROR regdb_open( void ); -int regdb_close( void ); -WERROR regdb_transaction_start(void); -WERROR regdb_transaction_commit(void); -WERROR regdb_transaction_cancel(void); -int regdb_get_seqnum(void); -bool regdb_store_keys(const char *key, struct regsubkey_ctr *ctr); -int regdb_fetch_keys(const char *key, struct regsubkey_ctr *ctr); -int regdb_fetch_values(const char* key, struct regval_ctr *values); -bool regdb_store_values(const char *key, struct regval_ctr *values); -bool regdb_subkeys_need_update(struct regsubkey_ctr *subkeys); -bool regdb_values_need_update(struct regval_ctr *values); - -/* The following definitions come from registry/reg_backend_hkpt_params.c */ - - -/* The following definitions come from registry/reg_backend_netlogon_params.c */ - - -/* The following definitions come from registry/reg_backend_perflib.c */ - - -/* The following definitions come from registry/reg_backend_printing.c */ - - -/* The following definitions come from registry/reg_backend_prod_options.c */ - - -/* The following definitions come from registry/reg_backend_shares.c */ - - -/* The following definitions come from registry/reg_backend_smbconf.c */ - - -/* The following definitions come from registry/reg_backend_tcpip_params.c */ - - -/* The following definitions come from registry/reg_cachehook.c */ - -WERROR reghook_cache_init(void); -WERROR reghook_cache_add(const char *keyname, struct registry_ops *ops); -struct registry_ops *reghook_cache_find(const char *keyname); -void reghook_dump_cache( int debuglevel ); - -/* The following definitions come from registry/reg_dispatcher.c */ - -bool store_reg_keys(struct registry_key_handle *key, - struct regsubkey_ctr *subkeys); -bool store_reg_values(struct registry_key_handle *key, struct regval_ctr *val); -WERROR create_reg_subkey(struct registry_key_handle *key, const char *subkey); -WERROR delete_reg_subkey(struct registry_key_handle *key, const char *subkey); -int fetch_reg_keys(struct registry_key_handle *key, - struct regsubkey_ctr *subkey_ctr); -int fetch_reg_values(struct registry_key_handle *key, struct regval_ctr *val); -bool regkey_access_check(struct registry_key_handle *key, uint32 requested, - uint32 *granted, - const struct nt_user_token *token); -WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, struct registry_key_handle *key, - struct security_descriptor **psecdesc); -WERROR regkey_set_secdesc(struct registry_key_handle *key, - struct security_descriptor *psecdesc); -bool reg_subkeys_need_update(struct registry_key_handle *key, - struct regsubkey_ctr *subkeys); -bool reg_values_need_update(struct registry_key_handle *key, - struct regval_ctr *values); - -/* The following definitions come from registry/reg_eventlog.c */ - -bool eventlog_init_keys(void); -bool eventlog_add_source( const char *eventlog, const char *sourcename, - const char *messagefile ); - /* The following definitions come from registry/reg_init_basic.c */ WERROR registry_init_common(void); @@ -144,45 +212,6 @@ WERROR registry_init_full(void); /* The following definitions come from registry/reg_init_smbconf.c */ -NTSTATUS registry_create_admin_token(TALLOC_CTX *mem_ctx, - NT_USER_TOKEN **ptoken); WERROR registry_init_smbconf(const char *keyname); -/* The following definitions come from registry/reg_perfcount.c */ - -void perfcount_init_keys( void ); -uint32 reg_perfcount_get_base_index(void); -- Samba Shared Repository