From 8b245758845523d5f8f017bb9d0e9aa57b616c28 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Mon, 26 Feb 2007 17:45:40 -0800 Subject: [PATCH] Return BadMatch if a client tries to clone non-cloneable outputs. --- randr/rrcrtc.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index fdd1d429d..474c9465c 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -667,6 +667,27 @@ ProcRRSetCrtcConfig (ClientPtr client) return BadMatch; } } + /* validate clones */ + for (i = 0; i < numOutputs; i++) + { + for (j = 0; j < numOutputs; j++) + { + int k; + if (i == j) + continue; + for (k = 0; k < outputs[i]->numClones; k++) + { + if (outputs[i]->clones[k] == outputs[j]) + break; + } + if (k == outputs[i]->numClones) + { + if (outputs) + xfree (outputs); + return BadMatch; + } + } + } pScreen = crtc->pScreen; pScrPriv = rrGetScrPriv(pScreen);