summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy White <jwhite@codeweavers.com>2020-04-27 16:04:44 -0500
committerFrediano Ziglio <freddy77@gmail.com>2020-04-28 09:07:41 +0100
commitf533879183969883c6f7314efbcfe3f48eeecef3 (patch)
treefa6ae506899cc606a324cb47c20f0fe78a314856
parentc0d05f9e1adf3005eafd101fcc05772bee575b6f (diff)
Prevent a buffer overflow if the cached screen does not match current screen.
Acked-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r--src/display.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/display.c b/src/display.c
index ac97f8a..751b50b 100644
--- a/src/display.c
+++ b/src/display.c
@@ -616,6 +616,12 @@ int display_scan_whole_screen(display_t *d, int num_vertical_tiles, int num_hori
ret = read_shm_image(d, fullscreen_new, 0, 0);
if (ret == 0) {
+ if (d->fullscreen->h != fullscreen_new->h || d->fullscreen->w != fullscreen_new->w) {
+ /* If we're in the middle of a screen resize, just bail */
+ destroy_shm_image(d, fullscreen_new);
+ return 0;
+ }
+
for (v_tile = 0; v_tile < num_vertical_tiles; v_tile++) {
/* Note that integer math and multiplying first is important;
especially in the case where our screen height is not a