From: Changbin Du Date: Mon, 27 Apr 2020 13:24:12 +0000 (+0800) Subject: ui/sdl2: fix segment fault caused by null pointer dereference X-Git-Tag: qemu-xen-4.15.0~191^2 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=32ec9839d89d2b814ada20b041b25feae23596bc;p=qemu-xen.git 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 --- diff --git a/ui/sdl2.c b/ui/sdl2.c index 3c9424eb42..61c7956da3 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; }