[Patch] registry issues

Pierre A. Humblet pierre@phumblet.no-ip.org
Sun Oct 24 01:15:00 GMT 2004


This should fix the first two issues in the recent mail
to cygwin-developers.
It's currently untested (need an NT machine).

Pierre

2004-10-24  Pierre Humblet <pierre.humblet@ieee.org>

	* registry.cc (get_registry_hive_path): Simplify and add a
	debug_printf in case of failure.
	(load_registry_hive): Revert 2004-04-19 change.	


Index: registry.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/registry.cc,v
retrieving revision 1.19
diff -u -p -r1.19 registry.cc
--- registry.cc 19 Apr 2004 19:29:10 -0000      1.19
+++ registry.cc 24 Oct 2004 01:01:31 -0000
@@ -211,14 +211,15 @@ get_registry_hive_path (const PSID psid,
       char buf[256];
       DWORD type, siz;
 
-      key[0] = '\0';
+      path[0] = '\0';
       if (!RegQueryValueExA (hkey, "ProfileImagePath", 0, &type,
-                            (BYTE *)buf, (siz = 256, &siz)))
-       ExpandEnvironmentStringsA (buf, key, 256);
+                            (BYTE *)buf, (siz = sizeof (buf), &siz)))
+       ExpandEnvironmentStringsA (buf, path, CYG_MAX_PATH + 1);
       RegCloseKey (hkey);
-      if (key[0])
-       return strcpy (path, key);
+      if (path[0])
+       return path;
     }
+  debug_printf ("HKLM\\%s not found", key);
   return NULL;
 }
 
@@ -241,7 +242,8 @@ load_registry_hive (PSID psid)
       RegCloseKey (hkey);
       return;
     }
-  enable_restore_privilege ();
+  /* This is only called while deimpersonated */
+  set_process_privilege (SE_RESTORE_NAME);
   if (get_registry_hive_path (psid, path))
     {
       strcat (path, "\\NTUSER.DAT");



More information about the Cygwin-patches mailing list