Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 135974 | Differences between
and this patch

Collapse All | Expand All

(-)xc/config/util/chownxterm.c (-4 / +8 lines)
Lines 41-48 Link Here
41
41
42
void help()
42
void help()
43
{
43
{
44
    setgid(getgid());
44
    if (setgid(getgid()) == -1) 
45
    setuid(getuid());
45
	exit(1);
46
    if (setuid(getuid()) == -1)
47
	exit(1);
46
    printf("chown-xterm makes %s suid root\n", XTERM_PATH);
48
    printf("chown-xterm makes %s suid root\n", XTERM_PATH);
47
    printf("This is necessary on Ultrix for /dev/tty operation.\n");
49
    printf("This is necessary on Ultrix for /dev/tty operation.\n");
48
    exit(0);
50
    exit(0);
Lines 51-58 Link Here
51
void print_error(err_string)
53
void print_error(err_string)
52
    char *err_string;
54
    char *err_string;
53
{
55
{
54
    setgid(getgid());
56
    if (setgid(getgid()) == -1)
55
    setuid(getuid());
57
	exit(1);
58
    if (setuid(getuid()) == -1)
59
	exit(1);
56
    fprintf(stderr, "%s: \"%s\"", prog_name, err_string);
60
    fprintf(stderr, "%s: \"%s\"", prog_name, err_string);
57
    perror(" failed");
61
    perror(" failed");
58
    exit(1);
62
    exit(1);
(-)xc/lib/X11/lcFile.c (-1 / +5 lines)
Lines 269-275 Link Here
269
	    if (seteuid(0) != 0) {
269
	    if (seteuid(0) != 0) {
270
		priv = 0;
270
		priv = 0;
271
	    } else {
271
	    } else {
272
		seteuid(oldeuid);
272
		if (seteuid(oldeuid) == -1) {
273
		    /* XXX ouch, coudn't get back to original uid 
274
		     what can we do ??? */
275
		    _exit(127);
276
		}
273
		priv = 1;
277
		priv = 1;
274
	    }
278
	    }
275
#endif
279
#endif
(-)xc/lib/xtrans/Xtranslcl.c (-2 / +11 lines)
Lines 360-366 Link Here
360
	uid_t       saved_euid;
360
	uid_t       saved_euid;
361
361
362
	saved_euid = geteuid();
362
	saved_euid = geteuid();
363
	setuid( getuid() ); /** sets the euid to the actual/real uid **/
363
	/** sets the euid to the actual/real uid **/
364
	if (setuid( getuid() ) == -1) {
365
		exit(1);
366
	}
364
	if( chown( slave, saved_euid, -1 ) < 0 ) {
367
	if( chown( slave, saved_euid, -1 ) < 0 ) {
365
		exit( 1 );
368
		exit( 1 );
366
		}
369
		}
Lines 369-375 Link Here
369
    }
372
    }
370
373
371
    waitpid(saved_pid, &exitval, 0);
374
    waitpid(saved_pid, &exitval, 0);
372
375
    if (WIFEXITED(exitval) && WEXITSTATUS(exitval) != 0) {
376
	close(fd);
377
	close(server);
378
	PRMSG(1, "PTSOpenClient: cannot set the owner of %s\n",
379
	      slave, 0, 0);
380
	return(-1);
381
    }
373
    if (chmod(slave, 0666) < 0) {
382
    if (chmod(slave, 0666) < 0) {
374
	close(fd);
383
	close(fd);
375
	close(server);
384
	close(server);
(-)xc/programs/Xserver/hw/xfree86/common/xf86Init.c (-2 / +6 lines)
Lines 1-5 Link Here
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.212 2004/01/27 01:31:45 dawes Exp $ */
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.212 2004/01/27 01:31:45 dawes Exp $ */
2
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 1.29 2005-12-14 20:12:00 ajax Exp $ */
2
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 1.29 2005/12/14 20:12:00 ajax Exp $ */
3
3
4
/*
4
/*
5
 * Loosely based on code bearing the following copyright:
5
 * Loosely based on code bearing the following copyright:
Lines 1905-1911 Link Here
1905
          FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno));
1905
          FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno));
1906
          break;
1906
          break;
1907
      case 0:  /* child */
1907
      case 0:  /* child */
1908
          setuid(getuid());
1908
	  if (setuid(getuid()) == -1) {
1909
	      xf86Msg(X_ERROR, "xf86RunVtInit: setuid failed (%s)\n",
1910
			 strerror(errno));
1911
	      exit(255);
1912
	  }
1909
          /* set stdin, stdout to the consoleFd */
1913
          /* set stdin, stdout to the consoleFd */
1910
          for (i = 0; i < 2; i++) {
1914
          for (i = 0; i < 2; i++) {
1911
            if (xf86Info.consoleFd != i) {
1915
            if (xf86Info.consoleFd != i) {
(-)xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c (-1 / +4 lines)
Lines 1270-1276 Link Here
1270
#ifndef SELF_CONTAINED_WRAPPER
1270
#ifndef SELF_CONTAINED_WRAPPER
1271
	xf86DisableIO();
1271
	xf86DisableIO();
1272
#endif
1272
#endif
1273
        setuid(getuid());
1273
        if (setuid(getuid()) == -1) {
1274
		ErrorF("xf86Execl: setuid() failed: %s\n", strerror(errno));
1275
		exit(255);
1276
	}
1274
#if !defined(SELF_CONTAINED_WRAPPER)
1277
#if !defined(SELF_CONTAINED_WRAPPER)
1275
        /* set stdin, stdout to the consoleFD, and leave stderr alone */
1278
        /* set stdin, stdout to the consoleFD, and leave stderr alone */
1276
        for (i = 0; i < 2; i++)
1279
        for (i = 0; i < 2; i++)
(-)xc/programs/Xserver/hw/xfree86/parser/write.c (-1 / +4 lines)
Lines 170-176 Link Here
170
					strerror(errno));
170
					strerror(errno));
171
			return 0;
171
			return 0;
172
		case 0: /* child */
172
		case 0: /* child */
173
			setuid(getuid());
173
			if (setuid(getuid() == -1) 
174
			    FatalError("xf86writeConfigFile(): "
175
				"setuid failed(%s)\n", 
176
				strerror(errno));
174
			ret = doWriteConfigFile(filename, cptr);
177
			ret = doWriteConfigFile(filename, cptr);
175
			exit(ret);
178
			exit(ret);
176
			break;
179
			break;
(-)xc/programs/Xserver/os/utils.c (-7 / +13 lines)
Lines 1-4 Link Here
1
/* $XdotOrg: xc/programs/Xserver/os/utils.c,v 1.21 2005-11-08 06:33:30 jkj Exp $ */
1
/* $XdotOrg: xc/programs/Xserver/os/utils.c,v 1.21 2005/11/08 06:33:30 jkj Exp $ */
2
/* $Xorg: utils.c,v 1.5 2001/02/09 02:05:24 xorgcvs Exp $ */
2
/* $Xorg: utils.c,v 1.5 2001/02/09 02:05:24 xorgcvs Exp $ */
3
/*
3
/*
4
4
Lines 1718-1725 Link Here
1718
    case -1:	/* error */
1718
    case -1:	/* error */
1719
	p = -1;
1719
	p = -1;
1720
    case 0:	/* child */
1720
    case 0:	/* child */
1721
	setgid(getgid());
1721
	if (setgid(getgid()) == -1)
1722
	setuid(getuid());
1722
	    _exit(127);
1723
	if (setuid(getuid()) == -1)
1724
	    _exit(127);
1723
	execl("/bin/sh", "sh", "-c", command, (char *)NULL);
1725
	execl("/bin/sh", "sh", "-c", command, (char *)NULL);
1724
	_exit(127);
1726
	_exit(127);
1725
    default:	/* parent */
1727
    default:	/* parent */
Lines 1770-1777 Link Here
1770
	xfree(cur);
1772
	xfree(cur);
1771
	return NULL;
1773
	return NULL;
1772
    case 0:	/* child */
1774
    case 0:	/* child */
1773
	setgid(getgid());
1775
	if (setgid(getgid()) == -1)
1774
	setuid(getuid());
1776
	    _exit(127);
1777
	if (setuid(getuid()) == -1)
1778
	    _exit(127);
1775
	if (*type == 'r') {
1779
	if (*type == 'r') {
1776
	    if (pdes[1] != 1) {
1780
	    if (pdes[1] != 1) {
1777
		/* stdout */
1781
		/* stdout */
Lines 1845-1852 Link Here
1845
	xfree(cur);
1849
	xfree(cur);
1846
	return NULL;
1850
	return NULL;
1847
    case 0:	/* child */
1851
    case 0:	/* child */
1848
	setgid(getgid());
1852
	if (setgid(getgid()) == -1)
1849
	setuid(getuid());
1853
	    _exit(127);
1854
	if (setuid(getuid()) == -1)
1855
	    _exit(127);
1850
	if (*type == 'r') {
1856
	if (*type == 'r') {
1851
	    if (pdes[1] != 1) {
1857
	    if (pdes[1] != 1) {
1852
		/* stdout */
1858
		/* stdout */
(-)xc/programs/xdm/session.c (-3 / +9 lines)
Lines 1-4 Link Here
1
/* $XdotOrg: xc/programs/xdm/session.c,v 1.3 2005-11-08 06:33:31 jkj Exp $ */
1
/* $XdotOrg: xc/programs/xdm/session.c,v 1.3 2005/11/08 06:33:31 jkj Exp $ */
2
/* $Xorg: session.c,v 1.8 2001/02/09 02:05:40 xorgcvs Exp $ */
2
/* $Xorg: session.c,v 1.8 2001/02/09 02:05:40 xorgcvs Exp $ */
3
/*
3
/*
4
4
Lines 488-495 Link Here
488
    else
488
    else
489
	ResetServer (d);
489
	ResetServer (d);
490
    if (removeAuth) {
490
    if (removeAuth) {
491
	setgid (verify.gid);
491
	if (setgid (verify.gid) == -1) {
492
	setuid (verify.uid);
492
	    LogError( "SessionExit: setgid: %s\n", strerror(errno));
493
	    exit(status);
494
	}
495
	if (setuid (verify.uid) == -1) {
496
	    LogError( "SessionExit: setuid: %s\n", strerror(errno));
497
	    exit(status);
498
	}
493
	RemoveUserAuthorization (d, &verify);
499
	RemoveUserAuthorization (d, &verify);
494
#ifdef K5AUTH
500
#ifdef K5AUTH
495
	/* do like "kdestroy" program */
501
	/* do like "kdestroy" program */
(-)xc/programs/xdm/xdmshell.c (-1 / +5 lines)
Lines 183-189 Link Here
183
#endif
183
#endif
184
184
185
    /* make xdm run in a non-setuid environment */
185
    /* make xdm run in a non-setuid environment */
186
    setuid (geteuid());
186
    if (setuid (geteuid()) == -1) {
187
	fprintf(stderr, "%s: cannot setuid (error %d, %s)\r\n",
188
		ProgramName, errno, strerror(errno));
189
	exit(1);
190
    }
187
191
188
    /*
192
    /*
189
     * exec /usr/bin/X11/xdm -nodaemon -udpPort 0
193
     * exec /usr/bin/X11/xdm -nodaemon -udpPort 0
(-)xc/programs/xf86dga/dga.c (-1 / +5 lines)
Lines 16-21 Link Here
16
#include <X11/Xmd.h>
16
#include <X11/Xmd.h>
17
#include <X11/extensions/xf86dga.h>
17
#include <X11/extensions/xf86dga.h>
18
#include <ctype.h>
18
#include <ctype.h>
19
#include <errno.h>
19
#include <stdio.h>
20
#include <stdio.h>
20
#include <stdlib.h>
21
#include <stdlib.h>
21
#include <signal.h>
22
#include <signal.h>
Lines 141-147 Link Here
141
142
142
#ifndef __UNIXOS2__
143
#ifndef __UNIXOS2__
143
   /* Give up root privs */
144
   /* Give up root privs */
144
   setuid(getuid());
145
   if (setuid(getuid()) == -1) {
146
      fprintf(stderr, "Unable to change uid: %s\n", strerror(errno));
147
      exit(2);
148
   }
145
#endif
149
#endif
146
150
147
   XF86DGASetViewPort(dis, DefaultScreen(dis), 0, 0);
151
   XF86DGASetViewPort(dis, DefaultScreen(dis), 0, 0);
(-)xc/programs/xinit/xinit.c (-2 / +5 lines)
Lines 1-5 Link Here
1
/* $Xorg: xinit.c,v 1.5 2001/02/09 02:05:49 xorgcvs Exp $ */
1
/* $Xorg: xinit.c,v 1.5 2001/02/09 02:05:49 xorgcvs Exp $ */
2
/* $XdotOrg: xc/programs/xinit/xinit.c,v 1.4 2005-10-04 01:27:34 ajax Exp $ */
2
/* $XdotOrg: xc/programs/xinit/xinit.c,v 1.4 2005/10/04 01:27:34 ajax Exp $ */
3
3
4
/*
4
/*
5
5
Lines 692-698 Link Here
692
startClient(char *client[])
692
startClient(char *client[])
693
{
693
{
694
	if ((clientpid = vfork()) == 0) {
694
	if ((clientpid = vfork()) == 0) {
695
		setuid(getuid());
695
		if (setuid(getuid()) == -1) {
696
			Error("cannot change uid: %s\n", strerror(errno));
697
			_exit(ERR_EXIT);
698
		}
696
		setpgrp(0, getpid());
699
		setpgrp(0, getpid());
697
		environ = newenviron;
700
		environ = newenviron;
698
#ifdef __UNIXOS2__
701
#ifdef __UNIXOS2__
(-)xc/programs/xload/xload.c (-3 / +12 lines)
Lines 34-40 Link Here
34
 * xload - display system load average in a window
34
 * xload - display system load average in a window
35
 */
35
 */
36
36
37
37
#include <errno.h>
38
#include <stdio.h> 
38
#include <stdio.h> 
39
#include <stdlib.h>
39
#include <stdlib.h>
40
#include <unistd.h>
40
#include <unistd.h>
Lines 162-169 Link Here
162
    /* For security reasons, we reset our uid/gid after doing the necessary
162
    /* For security reasons, we reset our uid/gid after doing the necessary
163
       system initialization and before calling any X routines. */
163
       system initialization and before calling any X routines. */
164
    InitLoadPoint();
164
    InitLoadPoint();
165
    setgid(getgid());		/* reset gid first while still (maybe) root */
165
    /* reset gid first while still (maybe) root */
166
    setuid(getuid());
166
    if (setgid(getgid()) == -1) {
167
	    fprintf(stderr, "%s: setgid failed: %s\n", 
168
		ProgramName, strerror(errno));
169
	    exit(1);
170
    }
171
    if (setuid(getuid()) == -1) {
172
	    fprintf(stderr, "%s: setuid failed: %s\n", 
173
		ProgramName, strerror(errno));
174
	    exit(1);
175
    }
167
176
168
    XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL);
177
    XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL);
169
178
(-)xc/programs/xterm/main.c (-4 / +14 lines)
Lines 1592-1599 Link Here
1592
    Window winToEmbedInto = None;
1592
    Window winToEmbedInto = None;
1593
1593
1594
#ifdef DISABLE_SETUID
1594
#ifdef DISABLE_SETUID
1595
    seteuid(getuid());
1595
    if (seteuid(getuid()) == -1)
1596
    setuid(getuid());
1596
	    exit(2);
1597
    if (setuid(getuid()) == -1)
1598
	    exit(2);
1597
#endif
1599
#endif
1598
1600
1599
    ProgramName = argv[0];
1601
    ProgramName = argv[0];
Lines 1619-1626 Link Here
1619
1621
1620
#if defined(USE_UTMP_SETGID)
1622
#if defined(USE_UTMP_SETGID)
1621
    get_pty(NULL, NULL);
1623
    get_pty(NULL, NULL);
1622
    seteuid(getuid());
1624
    if (seteuid(getuid()) == -1) {
1623
    setuid(getuid());
1625
           fprintf(stderr,
1626
               "%s: unable to change back euid\n", ProgramName);
1627
           exit(1);
1628
    }
1629
    if (setuid(getuid()) == -1) {
1630
           fprintf(stderr,
1631
               "%s: unable to change back uid\n", ProgramName);
1632
           exit(1);
1633
    }
1624
#define get_pty(pty, from) really_get_pty(pty, from)
1634
#define get_pty(pty, from) really_get_pty(pty, from)
1625
#endif
1635
#endif
1626
1636
(-)xc/programs/xterm/misc.c (-4 / +8 lines)
Lines 1094-1101 Link Here
1094
    pid = fork();
1094
    pid = fork();
1095
    switch (pid) {
1095
    switch (pid) {
1096
    case 0:			/* child */
1096
    case 0:			/* child */
1097
	setgid(gid);
1097
	if (setgid(gid) == -1)
1098
	setuid(uid);
1098
	    _exit(ERROR_SETUID);
1099
	if (setuid(uid) == -1) 
1100
	    _exit(ERROR_SETUID);
1099
	fd = open(pathname,
1101
	fd = open(pathname,
1100
		  O_WRONLY | O_CREAT | (append ? O_APPEND : O_EXCL),
1102
		  O_WRONLY | O_CREAT | (append ? O_APPEND : O_EXCL),
1101
		  mode);
1103
		  mode);
Lines 1262-1269 Link Here
1262
	    signal(SIGCHLD, SIG_DFL);
1264
	    signal(SIGCHLD, SIG_DFL);
1263
1265
1264
	    /* (this is redundant) */
1266
	    /* (this is redundant) */
1265
	    setgid(screen->gid);
1267
	    if (setgid(screen->gid) == -1)
1266
	    setuid(screen->uid);
1268
		exit(ERROR_SETUID);
1269
	    if (setuid(screen->uid) == -1)
1270
		exit(ERROR_SETUID);
1267
1271
1268
	    execl(shell, shell, "-c", &screen->logfile[1], (void *) 0);
1272
	    execl(shell, shell, "-c", &screen->logfile[1], (void *) 0);
1269
1273
(-)xc/programs/xterm/print.c (-3 / +5 lines)
Lines 387-395 Link Here
387
		dup2(fileno(stderr), 2);
387
		dup2(fileno(stderr), 2);
388
		close(fileno(stderr));
388
		close(fileno(stderr));
389
	    }
389
	    }
390
390
	    /* don't want privileges! */
391
	    setgid(screen->gid);	/* don't want privileges! */
391
	    if (setgid(screen->gid) == -1)
392
	    setuid(screen->uid);
392
		    exit(2);
393
	    if (setuid(screen->uid) == -1)
394
		    exit(2);
393
395
394
	    Printer = popen(screen->printer_command, "w");
396
	    Printer = popen(screen->printer_command, "w");
395
	    input = fdopen(my_pipe[0], "r");
397
	    input = fdopen(my_pipe[0], "r");

Return to bug 135974