From b2b0119f4da7786a9d0e63317d20481527b9f1d7 Mon Sep 17 00:00:00 2001 From: o9000 Date: Fri, 19 Jan 2018 21:21:22 +0000 Subject: [PATCH] Fix use after free in DPI computation --- src/util/server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/server.c b/src/util/server.c index 1b9499d..770c640 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -358,7 +358,6 @@ void get_monitors() for (int j = 0; j < crtc_info->noutput; ++j) { XRROutputInfo *output_info = XRRGetOutputInfo(server.display, res, crtc_info->outputs[j]); server.monitors[i_monitor].names[j] = g_strdup(output_info->name); - XRRFreeOutputInfo(output_info); server.monitors[i_monitor].primary = crtc_info->outputs[j] == primary_output; int dpi = compute_dpi(crtc_info, output_info); if (dpi) @@ -370,6 +369,7 @@ void get_monitors() server.monitors[i_monitor].width, server.monitors[i_monitor].height, server.monitors[i_monitor].dpi); + XRRFreeOutputInfo(output_info); } server.monitors[i_monitor].names[crtc_info->noutput] = NULL; XRRFreeCrtcInfo(crtc_info);