summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;