From da678db0ef57c45f1bbe1c0e8f14da70746ed2cd Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Fri, 17 Dec 2010 16:09:35 +0200 Subject: Backport: randr: check for virtual size limits before set crtc Return a error if the screen is configured to an invalid size. Signed-off-by: Tiago Vignatti Reviewed-by: Adam Jackson Reviewed-by: Daniel Stone Signed-off-by: Keith Packard --- nx-X11/programs/Xserver/randr/rrscreen.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c') diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c index 9b3935e03..9bea97b9f 100644 --- a/nx-X11/programs/Xserver/randr/rrscreen.c +++ b/nx-X11/programs/Xserver/randr/rrscreen.c @@ -938,6 +938,18 @@ ProcRRSetScreenConfig (ClientPtr client) width = mode->mode.height; height = mode->mode.width; } + + if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) { + client->errorValue = width; + free(pData); + return BadValue; + } + if (height < pScrPriv->minHeight || pScrPriv->maxHeight < height) { + client->errorValue = height; + free(pData); + return BadValue; + } + if (width != pScreen->width || height != pScreen->height) { int c; -- cgit v1.2.3 From faddfbec6ff331c3859e2f57040da4a8cf072baa Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Fri, 22 May 2009 09:54:38 +0200 Subject: Backport: randr: fix server crash in RRGetScreenInfo We don't return rates to randr < 1.1 clients, so don't allocate space for them. This fixes a FatalError due to not all allocated space being used. X.Org bug#21861 Reported-by: Guillaume Quintin Signed-off-by: Julien Cristau --- nx-X11/programs/Xserver/randr/rrscreen.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c') diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c index 9bea97b9f..20eed1196 100644 --- a/nx-X11/programs/Xserver/randr/rrscreen.c +++ b/nx-X11/programs/Xserver/randr/rrscreen.c @@ -677,8 +677,9 @@ ProcRRGetScreenInfo (ClientPtr client) rep.sizeID = pData->size; rep.rate = pData->refresh; - extraLen = (rep.nSizes * sizeof (xScreenSizes) + - rep.nrateEnts * sizeof (CARD16)); + extraLen = rep.nSizes * sizeof (xScreenSizes); + if (has_rate) + extraLen += rep.nrateEnts * sizeof (CARD16); if (extraLen) { -- cgit v1.2.3 From bd5754f94a9b48c246d115eaed0d0e8bece95aca Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 9 Jul 2012 19:12:42 -0700 Subject: Backport: ProcRRGetScreenInfo: swap configTimestamp as well Signed-off-by: Alan Coopersmith Reviewed-by: Keith Packard Tested-by: Daniel Stone --- nx-X11/programs/Xserver/randr/rrscreen.c | 1 + 1 file changed, 1 insertion(+) (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c') diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c index 20eed1196..011b97f3c 100644 --- a/nx-X11/programs/Xserver/randr/rrscreen.c +++ b/nx-X11/programs/Xserver/randr/rrscreen.c @@ -745,6 +745,7 @@ ProcRRGetScreenInfo (ClientPtr client) swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); swapl(&rep.timestamp, n); + swapl(&rep.configTimestamp, n); swaps(&rep.rotation, n); swaps(&rep.nSizes, n); swaps(&rep.sizeID, n); -- cgit v1.2.3 From 9e2ac01a4e9bd39e5127b35bc263d5544c6de7a2 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Fri, 29 Jun 2012 13:33:58 -0700 Subject: Backport: randr: Fix REQUEST vs. REQUEST_SIZE_MATCH mismatch ProcRRGetScreenSizeRange uses REQUEST(xRRGetScreenSizeRangeReq) followed by REQUEST_SIZE_MATCH(xRRGetScreenInfoReq). This happens to work out because both requests have the same size, so this is not a functional change, just a cosmetic one. Signed-off-by: Aaron Plattner Reviewed-by: Alan Coopersmith Signed-off-by: Keith Packard --- nx-X11/programs/Xserver/randr/rrscreen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c') diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c index 011b97f3c..e0eb0769b 100644 --- a/nx-X11/programs/Xserver/randr/rrscreen.c +++ b/nx-X11/programs/Xserver/randr/rrscreen.c @@ -228,7 +228,7 @@ ProcRRGetScreenSizeRange (ClientPtr client) rrScrPrivPtr pScrPriv; int rc; - REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); + REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); #ifndef NXAGENT_SERVER rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); #else -- cgit v1.2.3 From cf660f485eb478bcb7aaef3a538f2791e46662d9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 28 May 2009 14:43:27 -0700 Subject: Backport: Make RANDR 'set' timestamps follow client specified time. Bug 21987. The lastSetTime value which indicates when the configuration within the server was last changed was not getting set in the appropriate RandR requests. Signed-off-by: Keith Packard --- nx-X11/programs/Xserver/randr/rrscreen.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c') diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c index e0eb0769b..a3851bd60 100644 --- a/nx-X11/programs/Xserver/randr/rrscreen.c +++ b/nx-X11/programs/Xserver/randr/rrscreen.c @@ -977,15 +977,10 @@ ProcRRSetScreenConfig (ClientPtr client) if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output)) rep.status = RRSetConfigFailed; - #ifndef NXAGENT_SERVER /* Bug 21987 */ - else - rep.status = RRSetConfigSuccess; - #else else { - rep.status = RRSetConfigSuccess; pScrPriv->lastSetTime = time; + rep.status = RRSetConfigSuccess; } - #endif /* * XXX Configure other crtcs to mirror as much as possible -- cgit v1.2.3