From eb866cd9fe5939efed532f4eb400cd889c00c2f4 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Wed, 7 Mar 2012 14:55:21 -0500 Subject: [PATCH] drm: Fix drmModeRes leak on error paths When creating outputs in the drm compositor, if allocating crtcs fails, then free the drm resources. Also, if the base output list is empty, free drm resources --- src/compositor-drm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compositor-drm.c b/src/compositor-drm.c index 9796014a..67fa5001 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -1263,8 +1263,10 @@ create_outputs(struct drm_compositor *ec, int option_connector, } ec->crtcs = calloc(resources->count_crtcs, sizeof(uint32_t)); - if (!ec->crtcs) + if (!ec->crtcs) { + drmModeFreeResources(resources); return -1; + } ec->num_crtcs = resources->count_crtcs; memcpy(ec->crtcs, resources->crtcs, sizeof(uint32_t) * ec->num_crtcs); @@ -1295,6 +1297,7 @@ create_outputs(struct drm_compositor *ec, int option_connector, if (wl_list_empty(&ec->base.output_list)) { fprintf(stderr, "No currently active connector found.\n"); + drmModeFreeResources(resources); return -1; }