From 7eca43cec93b37a3db3a2d66aff86569e0f60313 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Tue, 28 Apr 2015 16:52:20 +0200 Subject: [PATCH] monitor-manager-kms: Avoid a couple of potential crashes The drm API can return NULL and we could end up using uninitialized memory if the driver private struct isn't cleared. --- src/backends/native/meta-monitor-manager-kms.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c index 3e1cef3a2..f0d938091 100644 --- a/src/backends/native/meta-monitor-manager-kms.c +++ b/src/backends/native/meta-monitor-manager-kms.c @@ -224,6 +224,9 @@ find_crtc_properties (MetaMonitorManagerKms *manager_kms, crtc_kms = meta_crtc->driver_private; props = drmModeObjectGetProperties (manager_kms->fd, meta_crtc->crtc_id, DRM_MODE_OBJECT_CRTC); + if (!props) + return; + for (i = 0; i < props->count_props; i++) { drmModePropertyPtr prop = drmModeGetProperty (manager_kms->fd, props->props[i]); @@ -479,7 +482,7 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager) height = MAX (height, meta_crtc->rect.y + meta_crtc->rect.height); } - meta_crtc->driver_private = g_new (MetaCRTCKms, 1); + meta_crtc->driver_private = g_new0 (MetaCRTCKms, 1); meta_crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify; find_crtc_properties (manager_kms, meta_crtc);