From 4176bffd0261d7734617dc73ae6013e86dbb841d Mon Sep 17 00:00:00 2001 From: David Venz Date: Sat, 25 Aug 2012 12:06:22 -0700 Subject: Bug 53242 - xwininfo segfaults on invalid screen Check number of screen entries before iterating past the end of the list Reviewed-by: Jeremy Huddleston Sequoia Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith --- dsimple.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dsimple.c b/dsimple.c index e6d320e..51fb231 100644 --- a/dsimple.c +++ b/dsimple.c @@ -121,6 +121,12 @@ void Setup_Display_And_Screen ( /* find our screen */ const xcb_setup_t *setup = xcb_get_setup(*dpy); xcb_screen_iterator_t screen_iter = xcb_setup_roots_iterator(setup); + int screen_count = xcb_setup_roots_length(setup); + if (screen_count <= screen_number) + { + Fatal_Error ("unable to access screen %d, max is %d", + screen_number, screen_count-1 ); + } for (i = 0; i < screen_number; i++) xcb_screen_next(&screen_iter); -- cgit v1.2.3