126 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- gpm-1.19.2/gpm-root.y.root	Wed Apr 19 01:48:41 2000
 | 
						|
+++ gpm-1.19.2/gpm-root.y	Mon Jun 12 23:24:14 2000
 | 
						|
@@ -49,7 +49,8 @@
 | 
						|
 #include <linux/limits.h>   /* OPEN_MAX */
 | 
						|
 #include <linux/vt.h>       /* VT_ACTIVATE */
 | 
						|
 #include <linux/keyboard.h> /* K_SHIFT */
 | 
						|
-#include <utmp.h>         
 | 
						|
+#include <utmp.h>
 | 
						|
+#include <endian.h>
 | 
						|
 
 | 
						|
 #ifdef HAVE_SYS_SYSMACROS_H
 | 
						|
 #include <sys/sysmacros.h>
 | 
						|
@@ -447,9 +448,10 @@
 | 
						|
 /*====================================================================*/
 | 
						|
 void f__fix(struct passwd *pass)
 | 
						|
 {
 | 
						|
-  setgid(pass->pw_gid);
 | 
						|
-  initgroups(pass->pw_name, pass->pw_gid);
 | 
						|
-  setuid(pass->pw_uid);
 | 
						|
+  if (setgid(pass->pw_gid) < 0 ||
 | 
						|
+      initgroups(pass->pw_name, pass->pw_gid) < 0 ||
 | 
						|
+      setuid(pass->pw_uid) < 0)
 | 
						|
+  exit(1);
 | 
						|
   setenv("HOME",    pass->pw_dir, 1);
 | 
						|
   setenv("LOGNAME", pass->pw_name,1);
 | 
						|
   setenv("USER",    pass->pw_name,1);
 | 
						|
@@ -1045,6 +1047,12 @@
 | 
						|
 static int postcount;
 | 
						|
 static Posted *activemenu;
 | 
						|
 
 | 
						|
+#if __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
+#define bigendian 1
 | 
						|
+#else
 | 
						|
+#define bigendian 0
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 Posted *postmenu(int fd, FILE *f, Draw *draw, int x, int y, int console)
 | 
						|
 {
 | 
						|
   Posted *new;
 | 
						|
@@ -1062,9 +1070,9 @@
 | 
						|
   lines=dump[0]; columns=dump[1];
 | 
						|
   i=(columns*dump[3]+dump[2])*2+1; /* where to get it */
 | 
						|
   if (i<0) i=1;
 | 
						|
-  new->colorcell=dump[4+i];
 | 
						|
+  new->colorcell=dump[4+i-bigendian];
 | 
						|
   gpm_debug_log(LOG_DEBUG,"Colorcell=%02x (at %i,%i = %i)",
 | 
						|
-                new->colorcell,dump[2],dump[3],i);
 | 
						|
+                new->colorcell,dump[2],dump[3],i-bigendian);
 | 
						|
 
 | 
						|
   /* place the box relative to the mouse */
 | 
						|
   if (!postcount) x -= draw->width/2; else x+=2;
 | 
						|
@@ -1078,7 +1086,11 @@
 | 
						|
   new->y=y; new->Y=y+draw->height-1;
 | 
						|
 
 | 
						|
   /* these definitions are dirty hacks, but they help in writing to the screen */
 | 
						|
+#if __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
+#define PUTC(c,f,b)   (*(curr++)=((b)<<4)+(f),*(curr++)=(c))
 | 
						|
+#else
 | 
						|
 #define PUTC(c,f,b)   (*(curr++)=(c),*(curr++)=((b)<<4)+(f))
 | 
						|
+#endif
 | 
						|
 #define PUTS(s,f,b)   for(curr2=s;*curr2;PUTC(*(curr2++),f,b))
 | 
						|
 #define GOTO(x,y)     (curr=dump+4+2*((y)*columns+(x)))
 | 
						|
 
 | 
						|
--- gpm-1.19.2/gpm-root.c.root	Wed Apr 19 01:53:38 2000
 | 
						|
+++ gpm-1.19.2/gpm-root.c	Mon Jun 12 23:25:05 2000
 | 
						|
@@ -43,7 +43,8 @@
 | 
						|
 #include <linux/limits.h>   /* OPEN_MAX */
 | 
						|
 #include <linux/vt.h>       /* VT_ACTIVATE */
 | 
						|
 #include <linux/keyboard.h> /* K_SHIFT */
 | 
						|
-#include <utmp.h>         
 | 
						|
+#include <utmp.h>
 | 
						|
+#include <endian.h>
 | 
						|
 
 | 
						|
 #ifdef HAVE_SYS_SYSMACROS_H
 | 
						|
 #include <sys/sysmacros.h>
 | 
						|
@@ -1305,9 +1306,10 @@
 | 
						|
 /*====================================================================*/
 | 
						|
 void f__fix(struct passwd *pass)
 | 
						|
 {
 | 
						|
-  setgid(pass->pw_gid);
 | 
						|
-  initgroups(pass->pw_name, pass->pw_gid);
 | 
						|
-  setuid(pass->pw_uid);
 | 
						|
+  if (setgid(pass->pw_gid) < 0 ||
 | 
						|
+      initgroups(pass->pw_name, pass->pw_gid) < 0 ||
 | 
						|
+      setuid(pass->pw_uid) < 0)
 | 
						|
+  exit(1);
 | 
						|
   setenv("HOME",    pass->pw_dir, 1);
 | 
						|
   setenv("LOGNAME", pass->pw_name,1);
 | 
						|
   setenv("USER",    pass->pw_name,1);
 | 
						|
@@ -1903,6 +1905,12 @@
 | 
						|
 static int postcount;
 | 
						|
 static Posted *activemenu;
 | 
						|
 
 | 
						|
+#if __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
+#define bigendian 1
 | 
						|
+#else
 | 
						|
+#define bigendian 0
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 Posted *postmenu(int fd, FILE *f, Draw *draw, int x, int y, int console)
 | 
						|
 {
 | 
						|
   Posted *new;
 | 
						|
@@ -1920,9 +1928,9 @@
 | 
						|
   lines=dump[0]; columns=dump[1];
 | 
						|
   i=(columns*dump[3]+dump[2])*2+1; /* where to get it */
 | 
						|
   if (i<0) i=1;
 | 
						|
-  new->colorcell=dump[4+i];
 | 
						|
+  new->colorcell=dump[4+i-bigendian];
 | 
						|
   gpm_debug_log(LOG_DEBUG,"Colorcell=%02x (at %i,%i = %i)",
 | 
						|
-                new->colorcell,dump[2],dump[3],i);
 | 
						|
+                new->colorcell,dump[2],dump[3],i-bigendian);
 | 
						|
 
 | 
						|
   /* place the box relative to the mouse */
 | 
						|
   if (!postcount) x -= draw->width/2; else x+=2;
 | 
						|
@@ -1936,7 +1944,11 @@
 | 
						|
   new->y=y; new->Y=y+draw->height-1;
 | 
						|
 
 | 
						|
   /* these definitions are dirty hacks, but they help in writing to the screen */
 | 
						|
+#if __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
+#define PUTC(c,f,b)   (*(curr++)=((b)<<4)+(f),*(curr++)=(c))
 | 
						|
+#else
 | 
						|
 #define PUTC(c,f,b)   (*(curr++)=(c),*(curr++)=((b)<<4)+(f))
 | 
						|
+#endif
 | 
						|
 #define PUTS(s,f,b)   for(curr2=s;*curr2;PUTC(*(curr2++),f,b))
 | 
						|
 #define GOTO(x,y)     (curr=dump+4+2*((y)*columns+(x)))
 | 
						|
 
 |