From abbfd23a22716e190f0cafae99cd1ce6a67f8cae Mon Sep 17 00:00:00 2001 From: Jaehyun Cho Date: Wed, 28 May 2014 14:32:39 +0900 Subject: [PATCH] gl_x11/evas_engine: Prevent dereference before NULL check Summary: re->win pointer was not compared with NULL pointer before re->win was referenced. Reviewers: Hermet Reviewed By: Hermet CC: seoz, cedric Differential Revision: https://phab.enlightenment.org/D910 --- src/modules/evas/engines/gl_x11/evas_engine.c | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 37faaa53d7..a4391b5dfa 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -929,7 +929,7 @@ eng_setup(Evas *eo_e, void *in) else { re = e->engine.data.output; - if (_re_wincheck(re)) + if (re->win && _re_wincheck(re)) { if ((re->info->info.display != re->win->disp) || (re->info->info.drawable != re->win->win) || @@ -939,15 +939,10 @@ eng_setup(Evas *eo_e, void *in) (re->info->info.depth != re->win->depth) || (re->info->info.destination_alpha != re->win->alpha)) { - int inc = 0; + re->win->gl_context->references++; + eng_window_free(re->win); + gl_wins--; - if (re->win) - { - re->win->gl_context->references++; - eng_window_free(re->win); - inc = 1; - gl_wins--; - } re->w = e->output.w; re->h = e->output.h; re->win = eng_window_new(re->info->info.display, @@ -962,9 +957,11 @@ eng_setup(Evas *eo_e, void *in) re->info->info.destination_alpha, re->info->info.rotation); eng_window_use(re->win); - if (re->win) gl_wins++; - if ((re->win) && (inc)) - re->win->gl_context->references--; + if (re->win) + { + gl_wins++; + re->win->gl_context->references--; + } } else if ((re->win->w != e->output.w) || (re->win->h != e->output.h) ||