127 lines
4 KiB
Diff
127 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)))
|
||
|
|