Revert "weston: Drop priviledges early, and seteuid when needed"
This reverts commit fc6ccb868f
.
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.
This commit is contained in:
parent
fc6ccb868f
commit
bcecca49b8
@ -2088,9 +2088,6 @@ int main(int argc, char *argv[])
|
|||||||
{ NULL, }
|
{ NULL, }
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Drop privilidges early, use getresuid when needed again */
|
|
||||||
seteuid(getuid());
|
|
||||||
|
|
||||||
while (o = getopt_long(argc, argv, opts, longopts, &o), o > 0) {
|
while (o = getopt_long(argc, argv, opts, longopts, &o), o > 0) {
|
||||||
switch (o) {
|
switch (o) {
|
||||||
case 'B':
|
case 'B':
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -441,7 +439,6 @@ evdev_input_device_create(struct evdev_input *master,
|
|||||||
struct evdev_input_device *device;
|
struct evdev_input_device *device;
|
||||||
struct wl_event_loop *loop;
|
struct wl_event_loop *loop;
|
||||||
struct weston_compositor *ec;
|
struct weston_compositor *ec;
|
||||||
uid_t saved_uid, uid, euid;
|
|
||||||
|
|
||||||
device = malloc(sizeof *device);
|
device = malloc(sizeof *device);
|
||||||
if (device == NULL)
|
if (device == NULL)
|
||||||
@ -459,10 +456,7 @@ evdev_input_device_create(struct evdev_input *master,
|
|||||||
device->rel.dx = 0;
|
device->rel.dx = 0;
|
||||||
device->rel.dy = 0;
|
device->rel.dy = 0;
|
||||||
|
|
||||||
getresuid(&uid, &euid, &saved_uid);
|
|
||||||
seteuid(saved_uid);
|
|
||||||
device->fd = open(path, O_RDONLY);
|
device->fd = open(path, O_RDONLY);
|
||||||
seteuid(euid);
|
|
||||||
if (device->fd < 0)
|
if (device->fd < 0)
|
||||||
goto err0;
|
goto err0;
|
||||||
|
|
||||||
|
11
src/tty.c
11
src/tty.c
@ -20,8 +20,6 @@
|
|||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
|
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.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 wl_event_loop *loop;
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
char filename[16];
|
char filename[16];
|
||||||
uid_t saved_uid, uid, euid;
|
|
||||||
|
|
||||||
tty = malloc(sizeof *tty);
|
tty = malloc(sizeof *tty);
|
||||||
if (tty == NULL)
|
if (tty == NULL)
|
||||||
@ -139,8 +136,6 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
|
|||||||
memset(tty, 0, sizeof *tty);
|
memset(tty, 0, sizeof *tty);
|
||||||
tty->compositor = compositor;
|
tty->compositor = compositor;
|
||||||
tty->vt_func = vt_func;
|
tty->vt_func = vt_func;
|
||||||
getresuid(&uid, &euid, &saved_uid);
|
|
||||||
seteuid(saved_uid);
|
|
||||||
if (tty_nr > 0) {
|
if (tty_nr > 0) {
|
||||||
snprintf(filename, sizeof filename, "/dev/tty%d", tty_nr);
|
snprintf(filename, sizeof filename, "/dev/tty%d", tty_nr);
|
||||||
fprintf(stderr, "compositor: using %s\n", filename);
|
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) {
|
if (tty->fd <= 0) {
|
||||||
fprintf(stderr, "failed to open tty: %m\n");
|
fprintf(stderr, "failed to open tty: %m\n");
|
||||||
seteuid(euid);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tcgetattr(tty->fd, &tty->terminal_attributes) < 0) {
|
if (tcgetattr(tty->fd, &tty->terminal_attributes) < 0) {
|
||||||
fprintf(stderr, "could not get terminal attributes: %m\n");
|
fprintf(stderr, "could not get terminal attributes: %m\n");
|
||||||
seteuid(euid);
|
|
||||||
return NULL;
|
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);
|
ret = ioctl(tty->fd, KDSETMODE, KD_GRAPHICS);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "failed to set KD_GRAPHICS mode on tty: %m\n");
|
fprintf(stderr, "failed to set KD_GRAPHICS mode on tty: %m\n");
|
||||||
seteuid(euid);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,12 +187,9 @@ tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
|
|||||||
mode.acqsig = SIGUSR1;
|
mode.acqsig = SIGUSR1;
|
||||||
if (ioctl(tty->fd, VT_SETMODE, &mode) < 0) {
|
if (ioctl(tty->fd, VT_SETMODE, &mode) < 0) {
|
||||||
fprintf(stderr, "failed to take control of vt handling\n");
|
fprintf(stderr, "failed to take control of vt handling\n");
|
||||||
seteuid(euid);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
seteuid(euid);
|
|
||||||
|
|
||||||
tty->vt_source =
|
tty->vt_source =
|
||||||
wl_event_loop_add_signal(loop, SIGUSR1, vt_handler, tty);
|
wl_event_loop_add_signal(loop, SIGUSR1, vt_handler, tty);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user