From 121ddd2b94c46bf6f8c8a8a4769430a3e832c2a1 Mon Sep 17 00:00:00 2001 From: Benedikt Heine Date: Mon, 25 Feb 2019 14:49:18 +0100 Subject: [PATCH] Always throw out the whole screen array If n < screens_len, screens_len did not get updated. So boundary checks wouldn't catch, if screens between n and screens_len are accessed. This will prevent such an error type in the future. --- src/x11/screen.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/x11/screen.c b/src/x11/screen.c index 357b9c5..fd23c56 100644 --- a/src/x11/screen.c +++ b/src/x11/screen.c @@ -77,12 +77,8 @@ void init_screens(void) void alloc_screen_ar(int n) { assert(n > 0); - if (n <= screens_len) return; - - screens = g_realloc(screens, n * sizeof(struct screen_info)); - - memset(screens, 0, n * sizeof(struct screen_info)); - + g_free(screens); + screens = g_malloc0(n * sizeof(struct screen_info)); screens_len = n; }