xserver-multidpi/hw
Olivier Fourdan a352f97954 xwayland: handle case without any crtc
Xwayland creates and destroys the CRTC along with the Wayland outputs,
so there is possibly a case where the number of CRTC drops to 0.

However, `xwl_present_get_crtc()` always return `crtcs[0]` which is
invalid when `numCrtcs` is 0.

That leads to crash if a client queries the Present capabilities when
there is no CRTC, the backtrace looks like:

  #0  raise() from libc.so
  #1  abort() from libc.so
  #2  OsAbort() at utils.c:1350
  #3  AbortServer() at log.c:879
  #4  FatalError() at log.c:1017
  #5  OsSigHandler() at osinit.c:156
  #6  OsSigHandler() at osinit.c:110
  #7  <signal handler called>
  #8  main_arena() from libc.so
  #9  proc_present_query_capabilities() at present_request.c:236
  #10 Dispatch() at dispatch.c:478
  #11 dix_main() at main.c:276

To avoid returning an invalid pointer (`crtcs[0]`) in that case, simply
check for `numCrtcs` being 0 and return `NULL` in that case.

Thanks to Michel Dänzer <michel.daenzer@amd.com> for pointing this as a
possible cause of the crash.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Bugzilla: https://bugzilla.redhat.com/1609181
(cherry picked from commit e8295c5020)
2019-01-09 15:26:33 +01:00
..
dmx dmx: Silence a string truncation warning. 2018-04-05 14:18:44 -04:00
kdrive meson: Install man pages 2018-03-27 10:28:33 -04:00
vfb vfb: Fix man page in re depth 2018-04-24 14:44:06 -04:00
xfree86 Disable -logfile and -modulepath when running with elevated privileges 2018-10-25 09:18:06 -04:00
xnest meson: Install man pages 2018-03-27 10:28:33 -04:00
xquartz man: s/__/@/g 2018-03-27 10:13:17 -04:00
xwayland xwayland: handle case without any crtc 2019-01-09 15:26:33 +01:00
xwin meson: install xwinclip and Xwinrc man pages 2018-06-19 09:52:17 -04:00
Makefile.am Xwayland DDX 2014-04-03 15:19:22 -07:00
meson.build meson: Move Xvfb build under an option. 2017-09-20 13:19:21 -04:00