From 81025e37ea5f2aeacbe11b7cec628ef46c75a68b Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Tue, 11 Mar 2014 16:58:18 -0400 Subject: [PATCH] weston-launch: Stat the path before opening it --- src/wayland/weston-launch.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/wayland/weston-launch.c b/src/wayland/weston-launch.c index 773eea4bd..36394c848 100644 --- a/src/wayland/weston-launch.c +++ b/src/wayland/weston-launch.c @@ -331,6 +331,13 @@ handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len) goto err0; } + if (major(s.st_rdev) != INPUT_MAJOR) { + fprintf(stderr, "Device %s is not an input device\n", + message->path); + reply.ret = -EPERM; + goto err0; + } + fd = open(message->path, message->flags); if (fd < 0) { fprintf(stderr, "Error opening device %s: %m\n", @@ -339,15 +346,6 @@ handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len) goto err0; } - if (major(s.st_rdev) != INPUT_MAJOR) { - close(fd); - fd = -1; - fprintf(stderr, "Device %s is not an input device\n", - message->path); - reply.ret = -EPERM; - goto err0; - } - err0: memset(&nmsg, 0, sizeof nmsg); nmsg.msg_iov = &iov;