Revert "weston: Drop priviledges early, and seteuid when needed"
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 24 Jan 2012 17:37:17 +0000 (12:37 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 24 Jan 2012 17:41:19 +0000 (12:41 -0500)
This reverts commit fc6ccb868fa735ee9c6592806f381aa1262bf0b2.

We still need root permissions for drmDrop/SetMaster.  Without
integration with ConsoleKit or systemd we also don't have access
to /dev/dri/cardX in the case where we open a new VT.

src/compositor.c
src/evdev.c
src/tty.c

index 17fbc39..b4c766c 100644 (file)
@@ -2088,9 +2088,6 @@ int main(int argc, char *argv[])
                { NULL, }
        };
 
-       /* Drop privilidges early, use getresuid when needed again */
-       seteuid(getuid());
-
        while (o = getopt_long(argc, argv, opts, longopts, &o), o > 0) {
                switch (o) {
                case 'B':
index 101b63f..f489ede 100644 (file)
@@ -20,8 +20,6 @@
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define _GNU_SOURCE
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -441,7 +439,6 @@ evdev_input_device_create(struct evdev_input *master,
        struct evdev_input_device *device;
        struct wl_event_loop *loop;
        struct weston_compositor *ec;
-       uid_t saved_uid, uid, euid;
 
        device = malloc(sizeof *device);
        if (device == NULL)
@@ -459,10 +456,7 @@ evdev_input_device_create(struct evdev_input *master,
        device->rel.dx = 0;
        device->rel.dy = 0;
 
-       getresuid(&uid, &euid, &saved_uid);
-       seteuid(saved_uid);
        device->fd = open(path, O_RDONLY);
-       seteuid(euid);
        if (device->fd < 0)
                goto err0;
 
index e823dcb..249f5bb 100644 (file)
--- a/src/tty.c
+++ b/src/tty.c
@@ -20,8 +20,6 @@
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define _GNU_SOURCE
-
 #include <termios.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -130,7 +128,6 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
        struct wl_event_loop *loop;
        struct stat buf;
        char filename[16];
-       uid_t saved_uid, uid, euid;
 
        tty = malloc(sizeof *tty);
        if (tty == NULL)
@@ -139,8 +136,6 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
        memset(tty, 0, sizeof *tty);
        tty->compositor = compositor;
        tty->vt_func = vt_func;
-       getresuid(&uid, &euid, &saved_uid);
-       seteuid(saved_uid);
        if (tty_nr > 0) {
                snprintf(filename, sizeof filename, "/dev/tty%d", tty_nr);
                fprintf(stderr, "compositor: using %s\n", filename);
@@ -157,13 +152,11 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
 
        if (tty->fd <= 0) {
                fprintf(stderr, "failed to open tty: %m\n");
-               seteuid(euid);
                return NULL;
        }
 
        if (tcgetattr(tty->fd, &tty->terminal_attributes) < 0) {
                fprintf(stderr, "could not get terminal attributes: %m\n");
-               seteuid(euid);
                return NULL;
        }
 
@@ -185,7 +178,6 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
        ret = ioctl(tty->fd, KDSETMODE, KD_GRAPHICS);
        if (ret) {
                fprintf(stderr, "failed to set KD_GRAPHICS mode on tty: %m\n");
-               seteuid(euid);
                return NULL;
        }
 
@@ -195,12 +187,9 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
        mode.acqsig = SIGUSR1;
        if (ioctl(tty->fd, VT_SETMODE, &mode) < 0) {
                fprintf(stderr, "failed to take control of vt handling\n");
-               seteuid(euid);
                return NULL;
        }
 
-       seteuid(euid);
-
        tty->vt_source =
                wl_event_loop_add_signal(loop, SIGUSR1, vt_handler, tty);