]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Minor optimization in _dbus_getsid().
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 10 Feb 2015 15:21:34 +0000 (16:21 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 11 Feb 2015 11:57:49 +0000 (11:57 +0000)
MSDN recommands to use GetCurrentProcess() for current process.

Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=54445

dbus/dbus-sysdeps-win.c

index 526db8e883566296b15b42a8429c68e8a96c7115..50258151ae0ae6ec97c88a7cc22162082e9034e4 100644 (file)
@@ -981,7 +981,7 @@ static BOOL is_winxp_sp3_or_lower()
 
 /** Gets our SID
  * @param sid points to sid buffer, need to be freed with LocalFree()
- * @param process_id the process id for which the sid should be returned
+ * @param process_id the process id for which the sid should be returned (use 0 for current process)
  * @returns process sid
  */
 dbus_bool_t
@@ -993,7 +993,13 @@ _dbus_getsid(char **sid, dbus_pid_t process_id)
   PSID psid;
   int retval = FALSE;
 
-  HANDLE process_handle = OpenProcess(is_winxp_sp3_or_lower() ? PROCESS_QUERY_INFORMATION : PROCESS_QUERY_LIMITED_INFORMATION, FALSE, process_id);
+  HANDLE process_handle;
+  if (process_id == 0)
+    process_handle = GetCurrentProcess();
+  else if (is_winxp_sp3_or_lower())
+    process_handle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, process_id);
+  else
+    process_handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, process_id);
 
   if (!OpenProcessToken (process_handle, TOKEN_QUERY, &process_token))
     {