From 87917a328320ce77992ed4d87d8825c7216f6f32 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Wed, 29 May 2013 23:03:47 +0200 Subject: [PATCH] ffplay: do not allow wider window than 16383 SDL surface pitch is 16bit, to avoid possible overflows, we limit the window width to 16383. Fixes ticket #2428. Signed-off-by: Marton Balint --- ffplay.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ffplay.c b/ffplay.c index ab50db8e1d..125b7c27ee 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1080,6 +1080,7 @@ static int video_open(VideoState *is, int force_set_video_mode, VideoPicture *vp w = default_width; h = default_height; } + w = FFMIN(16383, w); if (screen && is->width == screen->w && screen->w == w && is->height== screen->h && screen->h == h && !force_set_video_mode) return 0; @@ -3249,10 +3250,14 @@ static void event_loop(VideoState *cur_stream) } break; case SDL_VIDEORESIZE: - screen = SDL_SetVideoMode(event.resize.w, event.resize.h, 0, + screen = SDL_SetVideoMode(FFMIN(16383, event.resize.w), event.resize.h, 0, SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL); - screen_width = cur_stream->width = event.resize.w; - screen_height = cur_stream->height = event.resize.h; + if (!screen) { + fprintf(stderr, "Failed to set video mode\n"); + do_exit(cur_stream); + } + screen_width = cur_stream->width = screen->w; + screen_height = cur_stream->height = screen->h; cur_stream->force_refresh = 1; break; case SDL_QUIT: