* spawn.cc (spawn_guts): Move call to set_process_privilege()

to load_registry_hive().
	* registry.cc (load_registry_hive): ditto.
	* fork.cc (fork_parent): Call sec_user_nih() only once.
This commit is contained in:
Corinna Vinschen 2002-05-06 10:05:46 +00:00
parent 3d9bc8a617
commit a991777994
4 changed files with 13 additions and 11 deletions

View File

@ -1,4 +1,11 @@
2002-05-24 Christopher January <chris@atomice.net> 2002-05-05 Pierre Humblet <pierre.humblet@ieee.org>
* spawn.cc (spawn_guts): Move call to set_process_privilege()
to load_registry_hive().
* registry.cc (load_registry_hive): ditto.
* fork.cc (fork_parent): Call sec_user_nih() only once.
2002-05-04 Christopher January <chris@atomice.net>
* path.h (path_conv::path_conv): Initialise normalized_path to NULL. * path.h (path_conv::path_conv): Initialise normalized_path to NULL.

View File

@ -466,6 +466,7 @@ fork_parent (HANDLE& hParent, dll *&first_dll,
#endif #endif
char sa_buf[1024]; char sa_buf[1024];
PSECURITY_ATTRIBUTES sec_attribs = sec_user_nih (sa_buf);
syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %x, 0, 0, %p, %p)", syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %x, 0, 0, %p, %p)",
myself->progname, myself->progname, c_flags, &si, &pi); myself->progname, myself->progname, c_flags, &si, &pi);
__malloc_lock (_reent_clib ()); __malloc_lock (_reent_clib ());
@ -473,8 +474,8 @@ fork_parent (HANDLE& hParent, dll *&first_dll,
newheap = cygheap_setup_for_child (&ch,cygheap->fdtab.need_fixup_before ()); newheap = cygheap_setup_for_child (&ch,cygheap->fdtab.need_fixup_before ());
rc = CreateProcess (myself->progname, /* image to run */ rc = CreateProcess (myself->progname, /* image to run */
myself->progname, /* what we send in arg0 */ myself->progname, /* what we send in arg0 */
sec_user_nih (sa_buf), sec_attribs,
sec_user_nih (sa_buf), sec_attribs,
TRUE, /* inherit handles from parent */ TRUE, /* inherit handles from parent */
c_flags, c_flags,
NULL, /* environment filled in later */ NULL, /* environment filled in later */

View File

@ -235,12 +235,13 @@ load_registry_hive (PSID psid)
/* Check if user hive is already loaded. */ /* Check if user hive is already loaded. */
cygsid csid (psid); cygsid csid (psid);
csid.string (sid); csid.string (sid);
if (!RegOpenKeyExA (HKEY_USERS, csid.string (sid), 0, KEY_READ, &hkey)) if (!RegOpenKeyExA (HKEY_USERS, sid, 0, KEY_READ, &hkey))
{ {
debug_printf ("User registry hive for %s already exists", sid); debug_printf ("User registry hive for %s already exists", sid);
RegCloseKey (hkey); RegCloseKey (hkey);
return; return;
} }
set_process_privilege (SE_RESTORE_NAME);
if (get_registry_hive_path (psid, path)) if (get_registry_hive_path (psid, path))
{ {
strcat (path, "\\NTUSER.DAT"); strcat (path, "\\NTUSER.DAT");

View File

@ -665,13 +665,6 @@ spawn_guts (HANDLE hToken, const char * prog_arg, const char *const *argv,
&& cygheap->user.token != INVALID_HANDLE_VALUE) && cygheap->user.token != INVALID_HANDLE_VALUE)
RevertToSelf (); RevertToSelf ();
static BOOL first_time = TRUE;
if (first_time)
{
set_process_privilege (SE_RESTORE_NAME);
first_time = FALSE;
}
/* Load users registry hive. */ /* Load users registry hive. */
load_registry_hive (sid); load_registry_hive (sid);