toytoolkit: Return NULL when no outputs are present
authorArmin Krezović <krezovic.armin@gmail.com>
Thu, 23 Jun 2016 09:59:31 +0000 (11:59 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Mon, 27 Jun 2016 10:17:05 +0000 (13:17 +0300)
Currently, display_get_output returns a first member
of the linked list, which can never be NULL.

This is problematic, as the function would return a
dangling pointer and NULL pointer checks wouldn't
work where needed and some of the invalid members
would get accessed that way, resulting in a crash.

Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Armin Krezović <krezovic.armin@gmail.com>
clients/window.c

index b5b598f..4de73ed 100644 (file)
@@ -5845,6 +5845,9 @@ display_get_cairo_device(struct display *display)
 struct output *
 display_get_output(struct display *display)
 {
+       if (wl_list_empty(&display->output_list))
+               return NULL;
+
        return container_of(display->output_list.next, struct output, link);
 }