125 lines
4.2 KiB
Diff
125 lines
4.2 KiB
Diff
|
diff -ubBrN --exclude-from=diff.excludes samba-3.0.20-orig/source/confdefs.h samba-3.0.20-new/source/confdefs.h
|
||
|
diff -ubBrN --exclude-from=diff.excludes samba-3.0.20-orig/source/include/rpc_reg.h samba-3.0.20-new/source/include/rpc_reg.h
|
||
|
--- samba-3.0.20-orig/source/include/rpc_reg.h 2005-07-28 08:19:50.000000000 -0500
|
||
|
+++ samba-3.0.20-new/source/include/rpc_reg.h 2005-09-01 09:03:30.000000000 -0500
|
||
|
@@ -217,14 +217,17 @@
|
||
|
POLICY_HND handle;
|
||
|
UNISTR4 name;
|
||
|
UNISTR4 key_class;
|
||
|
- uint32 reserved;
|
||
|
+ uint32 options;
|
||
|
uint32 access;
|
||
|
+
|
||
|
+ /* FIXME! collapse all this into one structure */
|
||
|
uint32 *sec_info;
|
||
|
uint32 ptr2;
|
||
|
BUFHDR hdr_sec;
|
||
|
uint32 ptr3;
|
||
|
SEC_DESC_BUF *data;
|
||
|
- uint32 unknown_2; /* 0x0000 0000 */
|
||
|
+
|
||
|
+ uint32 *disposition;
|
||
|
} REG_Q_CREATE_KEY_EX;
|
||
|
|
||
|
typedef struct {
|
||
|
diff -ubBrN --exclude-from=diff.excludes samba-3.0.20-orig/source/registry/reg_db.c samba-3.0.20-new/source/registry/reg_db.c
|
||
|
--- samba-3.0.20-orig/source/registry/reg_db.c 2005-08-07 18:09:57.000000000 -0500
|
||
|
+++ samba-3.0.20-new/source/registry/reg_db.c 2005-09-01 09:05:05.000000000 -0500
|
||
|
@@ -49,6 +49,7 @@
|
||
|
"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009",
|
||
|
"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print\\Monitors",
|
||
|
"HKLM\\SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
|
||
|
+ "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\DefaultUserConfiguration",
|
||
|
"HKLM\\SYSTEM\\CurrentControlSet\\Services\\TcpIp\\Parameters",
|
||
|
"HKLM\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters",
|
||
|
"HKU",
|
||
|
@@ -149,6 +150,11 @@
|
||
|
regval_ctr_init( &values );
|
||
|
|
||
|
regdb_fetch_values( builtin_registry_values[i].path, &values );
|
||
|
+
|
||
|
+ /* preserve existing values across restarts. Only add new ones */
|
||
|
+
|
||
|
+ if ( !regval_ctr_key_exists( &values, builtin_registry_values[i].valuename ) )
|
||
|
+ {
|
||
|
switch( builtin_registry_values[i].type ) {
|
||
|
case REG_DWORD:
|
||
|
regval_ctr_addvalue( &values,
|
||
|
@@ -172,6 +178,7 @@
|
||
|
builtin_registry_values[i].type));
|
||
|
}
|
||
|
regdb_store_values( builtin_registry_values[i].path, &values );
|
||
|
+ }
|
||
|
|
||
|
regval_ctr_destroy( &values );
|
||
|
}
|
||
|
@@ -191,8 +198,6 @@
|
||
|
if ( tdb_reg )
|
||
|
return True;
|
||
|
|
||
|
- /* placeholder tdb; reinit upon startup */
|
||
|
-
|
||
|
if ( !(tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) )
|
||
|
{
|
||
|
tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
|
||
|
@@ -209,14 +214,15 @@
|
||
|
vers_id = tdb_fetch_int32(tdb_reg, vstring);
|
||
|
|
||
|
if ( vers_id != REGVER_V1 ) {
|
||
|
+ /* any upgrade code here if needed */
|
||
|
+ }
|
||
|
|
||
|
- /* create the registry here */
|
||
|
+ /* always setup the necessary keys and values */
|
||
|
|
||
|
if ( !init_registry_data() ) {
|
||
|
DEBUG(0,("init_registry: Failed to initiailize data in registry!\n"));
|
||
|
return False;
|
||
|
}
|
||
|
- }
|
||
|
|
||
|
return True;
|
||
|
}
|
||
|
diff -ubBrN --exclude-from=diff.excludes samba-3.0.20-orig/source/rpc_parse/parse_reg.c samba-3.0.20-new/source/rpc_parse/parse_reg.c
|
||
|
--- samba-3.0.20-orig/source/rpc_parse/parse_reg.c 2005-07-28 08:19:48.000000000 -0500
|
||
|
+++ samba-3.0.20-new/source/rpc_parse/parse_reg.c 2005-09-01 09:03:30.000000000 -0500
|
||
|
@@ -227,7 +227,7 @@
|
||
|
q_c->ptr2 = 1;
|
||
|
init_buf_hdr(&q_c->hdr_sec, sec_buf->len, sec_buf->len);
|
||
|
q_c->ptr3 = 1;
|
||
|
- q_c->unknown_2 = 0x00000000;
|
||
|
+ q_c->disposition = TALLOC_P( get_talloc_ctx(), uint32 );
|
||
|
}
|
||
|
|
||
|
/*******************************************************************
|
||
|
@@ -259,7 +259,7 @@
|
||
|
if(!prs_align(ps))
|
||
|
return False;
|
||
|
|
||
|
- if(!prs_uint32("reserved", ps, depth, &q_u->reserved))
|
||
|
+ if(!prs_uint32("options", ps, depth, &q_u->options))
|
||
|
return False;
|
||
|
if(!prs_uint32("access", ps, depth, &q_u->access))
|
||
|
return False;
|
||
|
@@ -267,16 +267,15 @@
|
||
|
if(!prs_pointer("sec_info", ps, depth, (void**)&q_u->sec_info, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
|
||
|
return False;
|
||
|
|
||
|
+ if ( q_u->sec_info ) {
|
||
|
if(!prs_uint32("ptr2", ps, depth, &q_u->ptr2))
|
||
|
return False;
|
||
|
- if(!reg_io_hdrbuf_sec(q_u->ptr2, &q_u->ptr3, &q_u->hdr_sec, q_u->data,
|
||
|
- ps, depth))
|
||
|
+ if(!reg_io_hdrbuf_sec(q_u->ptr2, &q_u->ptr3, &q_u->hdr_sec, q_u->data, ps, depth))
|
||
|
return False;
|
||
|
+ }
|
||
|
|
||
|
-#if 0
|
||
|
- if(!prs_uint32("unknown_2", ps, depth, &q_u->unknown_2))
|
||
|
+ if(!prs_pointer("disposition", ps, depth, (void**)&q_u->disposition, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32))
|
||
|
return False;
|
||
|
-#endif
|
||
|
|
||
|
return True;
|
||
|
}
|