From 32ec9839d89d2b814ada20b041b25feae23596bc Mon Sep 17 00:00:00 2001 From: Changbin Du Date: Mon, 27 Apr 2020 21:24:12 +0800 Subject: [PATCH] ui/sdl2: fix segment fault caused by null pointer dereference I found SDL_GetWindowFromID() sometimes return NULL when I start qemu via ssh forwarding even the window has been crated already. I am not sure whether this is a bug of SDL, but we'd better check it carefully. Signed-off-by: Changbin Du Message-id: 20200427132412.17909-1-changbin.du@gmail.com Signed-off-by: Gerd Hoffmann --- ui/sdl2.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ui/sdl2.c b/ui/sdl2.c index 3c9424eb42c3..61c7956da334 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -332,6 +332,10 @@ static void handle_keydown(SDL_Event *ev) int gui_key_modifier_pressed = get_mod_state(); int gui_keysym = 0; + if (!scon) { + return; + } + if (!scon->ignore_hotkeys && gui_key_modifier_pressed && !ev->key.repeat) { switch (ev->key.keysym.scancode) { case SDL_SCANCODE_2: @@ -412,6 +416,10 @@ static void handle_keyup(SDL_Event *ev) { struct sdl2_console *scon = get_scon_from_window(ev->key.windowID); + if (!scon) { + return; + } + scon->ignore_hotkeys = false; sdl2_process_key(scon, &ev->key); } @@ -421,6 +429,10 @@ static void handle_textinput(SDL_Event *ev) struct sdl2_console *scon = get_scon_from_window(ev->text.windowID); QemuConsole *con = scon ? scon->dcl.con : NULL; + if (!con) { + return; + } + if (qemu_console_is_graphic(con)) { return; }