From f7271fe4e12b564c25a44ca76ee82bb5e78601b6 Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Wed, 14 Nov 2018 16:29:18 +0100 Subject: chamelium: Fix analog bridge detection memory leak The connector and EDID blob retrieved when checking for analog bridges need to be freed before returning from the associated function. Fixes: f8d6afa67 ("tests/chamelium: Detect analog bridges and handle EDID accordingly") Reviewed-by: Lyude Paul Signed-off-by: Paul Kocialkowski --- tests/kms_chamelium.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'tests/kms_chamelium.c') diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c index e0e3e3f1..55b346a9 100644 --- a/tests/kms_chamelium.c +++ b/tests/kms_chamelium.c @@ -175,8 +175,10 @@ check_analog_bridge(data_t *data, struct chamelium_port *port) unsigned char *edid; char edid_vendor[3]; - if (chamelium_port_get_type(port) != DRM_MODE_CONNECTOR_VGA) + if (chamelium_port_get_type(port) != DRM_MODE_CONNECTOR_VGA) { + drmModeFreeConnector(connector); return false; + } igt_assert(kmstest_get_property(data->drm_fd, connector->connector_id, DRM_MODE_OBJECT_CONNECTOR, "EDID", NULL, @@ -191,14 +193,14 @@ check_analog_bridge(data_t *data, struct chamelium_port *port) ((edid[9] & 0xe0) >> 5)) + '@'; edid_vendor[2] = (edid[9] & 0x1f) + '@'; + drmModeFreePropertyBlob(edid_blob); + drmModeFreeConnector(connector); + /* Analog bridges provide their own EDID */ if (edid_vendor[0] != 'I' || edid_vendor[1] != 'G' || edid_vendor[0] != 'T') return true; - drmModeFreePropertyBlob(edid_blob); - drmModeFreeConnector(connector); - return false; } -- cgit v1.2.3