diff options
author | Jeremy White <jwhite@codeweavers.com> | 2020-04-27 16:04:44 -0500 |
---|---|---|
committer | Frediano Ziglio <freddy77@gmail.com> | 2020-04-28 09:07:41 +0100 |
commit | f533879183969883c6f7314efbcfe3f48eeecef3 (patch) | |
tree | fa6ae506899cc606a324cb47c20f0fe78a314856 | |
parent | c0d05f9e1adf3005eafd101fcc05772bee575b6f (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.c | 6 |
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 |