From f7968296c621ddcaeb637dde3ce24452ab20a958 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 24 Jan 2012 16:37:15 +0100 Subject: [PATCH] weston: Drop priviledges early, and seteuid when needed --- src/evdev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/evdev.c b/src/evdev.c index f489ede..101b63f 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -20,6 +20,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define _GNU_SOURCE + #include #include #include @@ -439,6 +441,7 @@ 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) @@ -456,7 +459,10 @@ 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; -- 2.7.4