patches/gnome-desktop-03-trusted-extensions.diff
changeset 10536 0a0b1cf6a4fb
parent 10515 79c4a78f3fd3
child 11180 7f911e6f7c0e
--- a/patches/gnome-desktop-03-trusted-extensions.diff	Wed Sep 19 19:40:54 2007 +0000
+++ b/patches/gnome-desktop-03-trusted-extensions.diff	Wed Sep 19 21:44:48 2007 +0000
@@ -1,6 +1,6 @@
-diff -urN gnome-desktop-2.20.0/configure.in ../SUNWgnome-panel-2.20.0.hacked/gnome-desktop-2.20.0/configure.in
---- gnome-desktop-2.20.0/configure.in	2006-12-04 17:22:29.361309000 +0000
-+++ ../SUNWgnome-panel-2.20.0.hacked/gnome-desktop-2.20.0/configure.in	2006-12-04 18:48:47.899545000 +0000
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/configure.in gnome-desktop.new/configure.in
+--- gnome-desktop.orig/configure.in	2007-09-19 21:47:26.581190000 +0100
++++ gnome-desktop.new/configure.in	2007-09-19 21:47:50.176721000 +0100
 @@ -113,6 +113,23 @@
  
  PKG_CHECK_MODULES(GNOME_DESKTOP, libxml-2.0 >= $LIBXML_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gconf-2.0 >= $GCONF_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED $STARTUP_NOTIFICATION_PACKAGE)
@@ -25,11 +25,10 @@
  PKG_CHECK_MODULES(GNOME_ABOUT, libxml-2.0 >= $LIBXML_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libgnomecanvas-2.0 >= $LIBGNOMECANVAS_REQUIRED)
  
  dnl gnome-doc-utils stuff
-XXX 
-diff -urN gnome-desktop-2.17.2/libgnome-desktop/Makefile.am ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/Makefile.am
---- gnome-desktop-2.17.2/libgnome-desktop/Makefile.am	2006-06-04 11:53:09.000000000 +0000
-+++ ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/Makefile.am	2006-12-04 16:31:30.993343000 +0000
-@@ -19,6 +19,7 @@
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/libgnome-desktop/Makefile.am gnome-desktop.new/libgnome-desktop/Makefile.am
+--- gnome-desktop.orig/libgnome-desktop/Makefile.am	2007-09-19 21:47:26.559771000 +0100
++++ gnome-desktop.new/libgnome-desktop/Makefile.am	2007-09-19 21:47:50.177122000 +0100
+@@ -17,6 +17,7 @@
  
  libgnome_desktop_2_la_SOURCES = \
  	gnome-desktop-item.c	\
@@ -37,9 +36,9 @@
  	gnome-ditem-edit.c	\
  	gnome-hint.c
  
-diff -urN gnome-desktop-2.17.5/libgnome-desktop/gnome-desktop-item.c ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.5/libgnome-desktop/gnome-desktop-item.c
---- gnome-desktop-2.17.5/libgnome-desktop/gnome-desktop-item.c	2006-08-05 11:59:08.000000000 +0000
-+++ ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.5/libgnome-desktop/gnome-desktop-item.c	2006-12-04 16:31:30.995647000 +0000
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/libgnome-desktop/gnome-desktop-item.c gnome-desktop.new/libgnome-desktop/gnome-desktop-item.c
+--- gnome-desktop.orig/libgnome-desktop/gnome-desktop-item.c	2007-09-19 21:47:26.560600000 +0100
++++ gnome-desktop.new/libgnome-desktop/gnome-desktop-item.c	2007-09-19 21:49:03.527373000 +0100
 @@ -44,6 +44,7 @@
  #include <libgnome/gnome-url.h>
  #include <locale.h>
@@ -56,7 +55,7 @@
  
  struct _GnomeDesktopItem {
  	int refcount;
-@@ -1747,6 +1749,7 @@
+@@ -1755,6 +1757,7 @@
  	char *new_exec, *uris, *temp;
  	char *exec_locale;
  	int launched = 0;
@@ -64,13 +63,14 @@
  #ifdef HAVE_STARTUP_NOTIFICATION
  	SnLauncherContext *sn_context;
  	SnDisplay *sn_display;
-@@ -1948,7 +1950,14 @@
+@@ -1953,7 +1956,15 @@
  #endif
  		
  		
 -		if ( ! g_spawn_async (working_dir,
 +
 +		if (gnome_desktop_tsol_is_multi_label_session () &&
++			gnome_desktop_tsol_user_is_workstation_owner () &&
 +			getzoneid () == 0) {
 +			command = g_strdup_printf ("%d:%s", gdk_screen_get_number (screen), g_strjoinv (" ", real_argv));
 +			gnome_desktop_tsol_proxy_app_launch (command);
@@ -80,7 +80,7 @@
  				      real_argv,
  				      envp,
  				      (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH /* flags */,
-@@ -1953,11 +1962,12 @@
+@@ -1961,11 +1972,12 @@
  				      NULL, /* child_setup_func_data */
  				      &ret /* child_pid */,
  				      error)) {
@@ -98,10 +98,10 @@
  		}
  		launched ++;
  
-diff -urN gnome-desktop-2.17.2/libgnome-desktop/gnome-desktop-tsol-extensions.c ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/gnome-desktop-tsol-extensions.c
---- gnome-desktop-2.17.2/libgnome-desktop/gnome-desktop-tsol-extensions.c	1970-01-01 00:00:00.000000000 +0000
-+++ ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/gnome-desktop-tsol-extensions.c	2006-12-04 18:15:48.015045000 +0000
-@@ -0,0 +1,77 @@
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/libgnome-desktop/gnome-desktop-tsol-extensions.c gnome-desktop.new/libgnome-desktop/gnome-desktop-tsol-extensions.c
+--- gnome-desktop.orig/libgnome-desktop/gnome-desktop-tsol-extensions.c	1970-01-01 01:00:00.000000000 +0100
++++ gnome-desktop.new/libgnome-desktop/gnome-desktop-tsol-extensions.c	2007-09-19 22:17:22.377451000 +0100
+@@ -0,0 +1,116 @@
 +/*
 + * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 + * Use is subject to license terms.
@@ -114,10 +114,49 @@
 +#include <stdlib.h>
 +#include <strings.h>
 +#include <user_attr.h>
++#include <sys/types.h>
++#include <unistd.h>
++#include <dlfcn.h>
++#include <link.h>
 +
 +#define ATOM "_LABEL_EXEC_COMMAND"
 +
-+gboolean gnome_desktop_tsol_is_clearance_admin_high (void)
++typedef Status (*xtsol_XTSOLgetWorkstationOwner) (Display *xpdy, uid_t *uidp);
++
++gboolean
++gnome_desktop_tsol_user_is_workstation_owner (void)
++{
++	uid_t uid;
++	gpointer handle;
++	Display *xdpy;
++	static int ret = -1;
++	xtsol_XTSOLgetWorkstationOwner libxtsol_XTSOLgetWorkstationOwner= NULL;
++
++	if (ret == -1) {
++		if (!(handle = dlopen ("/usr/lib/libXtsol.so.1", RTLD_LAZY)) ||
++		    !(libxtsol_XTSOLgetWorkstationOwner =
++			(xtsol_XTSOLgetWorkstationOwner) dlsym (handle,
++						"XTSOLgetWorkstationOwner"))) {
++			ret = 0;
++			return FALSE;
++		}
++
++		xdpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
++
++		libxtsol_XTSOLgetWorkstationOwner (xdpy, &uid);
++
++		if (uid == getuid ()) {
++			ret = 1;
++		} else {
++			ret = 0;
++		}
++	}
++
++	return ret ? TRUE : FALSE;
++}
++
++gboolean 
++gnome_desktop_tsol_is_clearance_admin_high (void)
 +{
 +        userattr_t      *uattr;
 +        char            *value = NULL;
@@ -179,19 +218,19 @@
 +	gdk_error_trap_pop ();
 +}
 +
-diff -urN gnome-desktop-2.17.2/libgnome-desktop/libgnome/Makefile.am ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/libgnome/Makefile.am
---- gnome-desktop-2.17.2/libgnome-desktop/libgnome/Makefile.am	2004-02-18 12:50:36.000000000 +0000
-+++ ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/libgnome/Makefile.am	2006-12-04 16:31:30.996995000 +0000
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/libgnome-desktop/libgnome/Makefile.am gnome-desktop.new/libgnome-desktop/libgnome/Makefile.am
+--- gnome-desktop.orig/libgnome-desktop/libgnome/Makefile.am	2007-09-19 21:47:26.561386000 +0100
++++ gnome-desktop.new/libgnome-desktop/libgnome/Makefile.am	2007-09-19 21:47:50.179634000 +0100
 @@ -1,3 +1,4 @@
  libgnome_desktopdir = $(includedir)/gnome-desktop-2.0/libgnome
  libgnome_desktop_HEADERS = \
 -	gnome-desktop-item.h
 +	gnome-desktop-item.h \
 +	gnome-desktop-tsol-extensions.h
-diff -urN gnome-desktop-2.17.2/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h
---- gnome-desktop-2.17.2/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h	1970-01-01 00:00:00.000000000 +0000
-+++ ../SUNWgnome-panel-2.17.1.hacked/gnome-desktop-2.17.2/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h	2006-12-04 17:16:51.316273000 +0000
-@@ -0,0 +1,9 @@
+diff -urN -x '*~' -x '*.rej*' gnome-desktop.orig/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h gnome-desktop.new/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h
+--- gnome-desktop.orig/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h	1970-01-01 01:00:00.000000000 +0100
++++ gnome-desktop.new/libgnome-desktop/libgnome/gnome-desktop-tsol-extensions.h	2007-09-19 21:54:08.669028000 +0100
+@@ -0,0 +1,10 @@
 +/*
 + * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 + * Use is subject to license terms.
@@ -200,4 +239,5 @@
 +gboolean gnome_desktop_tsol_is_clearance_admin_high (void);
 +gboolean gnome_desktop_tsol_is_multi_label_session (void);
 +void gnome_desktop_tsol_proxy_app_launch (char *command);
++gboolean gnome_desktop_tsol_user_is_workstation_owner (void);
 +