projects
/
profile
/
ivi
/
weston-ivi-shell.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
81b4963
)
weston-launch: Use fstat to make sure we stat the right fd
author
Kristian Høgsberg
<krh@bitplanet.net>
Thu, 19 Sep 2013 05:14:09 +0000
(22:14 -0700)
committer
Kristian Høgsberg
<krh@bitplanet.net>
Thu, 19 Sep 2013 05:14:09 +0000
(22:14 -0700)
Instead of the racy stat+open, open first and then use fstat. We want to
make sure we're stating the fd we'll be sending to weston and nothing else.
src/weston-launch.c
patch
|
blob
|
history
diff --git
a/src/weston-launch.c
b/src/weston-launch.c
index
059010c
..
05f15c1
100644
(file)
--- a/
src/weston-launch.c
+++ b/
src/weston-launch.c
@@
-280,9
+280,6
@@
handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len)
/* Ensure path is null-terminated */
((char *) message)[len-1] = '\0';
- if (stat(message->path, &s) < 0)
- goto err0;
-
fd = open(message->path, message->flags);
if (fd < 0) {
fprintf(stderr, "Error opening device %s: %m\n",
@@
-290,6
+287,13
@@
handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len)
goto err0;
}
+ if (fstat(fd, &s) < 0) {
+ close(fd);
+ fd = -1;
+ fprintf(stderr, "Failed to stat %s\n", message->path);
+ goto err0;
+ }
+
if (major(s.st_rdev) != INPUT_MAJOR &&
major(s.st_rdev) != DRM_MAJOR) {
close(fd);