diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2014-02-13 16:18:43 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2014-02-13 16:26:49 +0000 |
commit | 9a9f6a9487201e4c80338e771eec28067f044240 (patch) | |
tree | 0a7f17a8040aae529ae0c76d9ad41f03a29a99dd | |
parent | 611490a176d9bfd136f4340f7c31e0e0f0beea4e (diff) |
uxa: Check for access to backlight interface
Before attaching properties to any connector, check that we can indeed
control the backlight through the sysfs interface by doing an access
check. If the xserver is started without root privileges, we cannot
write through /sys/class/backlight and so should take care not to
advertise that we can.
Reported-by: Hans de Geode <hdegeode@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/uxa/intel_display.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c index a4e04ec4..e1b29201 100644 --- a/src/uxa/intel_display.c +++ b/src/uxa/intel_display.c @@ -298,6 +298,14 @@ intel_output_backlight_get_max(xf86OutputPtr output) char path[BACKLIGHT_PATH_LEN], val[BACKLIGHT_VALUE_LEN]; int fd, max = 0; + /* We are used as an initial check to see if we can + * control the backlight, so first test if we can set values. + */ + sprintf(path, "%s/%s/brightness", + BACKLIGHT_CLASS, intel_output->backlight_iface); + if (access(path, R_OK | W_OK)) + return -1; + sprintf(path, "%s/%s/max_brightness", BACKLIGHT_CLASS, intel_output->backlight_iface); fd = open(path, O_RDONLY); |