summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Verhaegen <libv@skynet.be>2011-08-23 15:19:59 -0700
committerAaron Plattner <aplattner@nvidia.com>2011-10-18 12:04:47 -0700
commit9b26e6bc8d2cdf5bac3025796855ccf05972358f (patch)
tree7d2d6dcd1d84228776f926fe60a17e7b9960e5fd
parentc8413362049cee8c30e0a9d67f78f9ebefe8e71f (diff)
randr: stop clients from deleting immutable output properties
Immutable in randr means that clients are not able to alter the property itself, they are only allowed to alter the property value. This logically means that the property then should not be deleted by the client either. Signed-off-by: Luc Verhaegen <libv@skynet.be> Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Reviewed-by: Aaron Plattner <aplattner@nvidia.com> Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
-rw-r--r--randr/rrproperty.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/randr/rrproperty.c b/randr/rrproperty.c
index 6ed24d3aa..d0a90203b 100644
--- a/randr/rrproperty.c
+++ b/randr/rrproperty.c
@@ -549,18 +549,31 @@ int
ProcRRDeleteOutputProperty (ClientPtr client)
{
REQUEST(xRRDeleteOutputPropertyReq);
- RROutputPtr output;
-
+ RROutputPtr output;
+ RRPropertyPtr prop;
+
REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
UpdateCurrentTime();
VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess);
-
+
if (!ValidAtom(stuff->property))
{
client->errorValue = stuff->property;
return BadAtom;
}
+ prop = RRQueryOutputProperty(output, stuff->property);
+ if (!prop)
+ {
+ client->errorValue = stuff->property;
+ return BadName;
+ }
+
+ if (prop->immutable)
+ {
+ client->errorValue = stuff->property;
+ return BadAccess;
+ }
RRDeleteOutputProperty(output, stuff->property);
return Success;