patches/dbus-03-consoleuser.diff
branchNEVADA_151
changeset 20264 12adaad92776
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/dbus-03-consoleuser.diff	Wed Oct 27 00:38:09 2010 +0000
@@ -0,0 +1,53 @@
+--- dbus-1.2.24/dbus/dbus-sysdeps-util-unix.c-orig	2010-10-19 13:27:19.672465743 -0500
++++ dbus-1.2.24/dbus/dbus-sysdeps-util-unix.c	2010-10-19 13:28:39.691609495 -0500
+@@ -45,6 +45,10 @@
+ #include <sys/un.h>
+ #include <syslog.h>
+ 
++#ifdef __sun
++#include <pwd.h>
++#endif
++
+ #ifdef HAVE_SYS_SYSLIMITS_H
+ #include <sys/syslimits.h>
+ #endif
+@@ -496,8 +500,31 @@ _dbus_user_at_console (const char *usern
+ 
+   DBusString f;
+   dbus_bool_t result;
++#ifdef __sun
++  struct passwd *passwd_entry;
++#endif
+ 
+   result = FALSE;
++
++#ifdef __sun
++  passwd_entry = getpwnam (username);
++  if (passwd_entry != NULL)
++    {
++      struct stat st;
++      uid_t uid;
++
++      uid = passwd_entry->pw_uid;
++
++      if (stat ("/dev/vt/console_user", &st) == 0 && st.st_uid == uid)
++        {
++         /*
++          * Owner is allowed to take over. Before we have real
++          * ownership in HAL, assume it's the console owner.
++          */
++          result = TRUE;
++        }
++    }
++#else
+   if (!_dbus_string_init (&f))
+     {
+       _DBUS_SET_OOM (error);
+@@ -521,6 +548,7 @@ _dbus_user_at_console (const char *usern
+ 
+  out:
+   _dbus_string_free (&f);
++#endif
+ 
+   return result;
+ }