From 6590c598fe11a3dda61006733cd3a2df75fd019b Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Tue, 12 Nov 2019 11:07:28 +0900 Subject: [PATCH] e_comp_wl_capture: fix a svace issue not checking return of tbm_surface_map. Change-Id: I698c336a5c5eff30c5f92ad45671db38afaefe23 --- src/bin/e_comp_wl_capture.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/bin/e_comp_wl_capture.c b/src/bin/e_comp_wl_capture.c index c4ee9cdaca..3789c4367a 100644 --- a/src/bin/e_comp_wl_capture.c +++ b/src/bin/e_comp_wl_capture.c @@ -196,6 +196,7 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h) unsigned char *c_src_ptr = NULL, *c_dst_ptr = NULL; int c_x, c_y, c_w, c_h; int c_tx, c_ty, c_tw, c_th; + int res; EINA_SAFETY_ON_NULL_RETURN_VAL(td, NULL); @@ -206,7 +207,12 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h) src_format = _e_capture_image_data_pixman_format_get_from_tbm_surface(tbm_surface_get_format(td->tbm_surface)); dst_format = src_format; - tbm_surface_map(td->tbm_surface, TBM_SURF_OPTION_READ, &info); + res = tbm_surface_map(td->tbm_surface, TBM_SURF_OPTION_READ, &info); + if (res != TBM_SURFACE_ERROR_NONE) + { + ERR("failed to map tbm_surface_h"); + return NULL; + } src_ptr = info.planes[0].ptr; src_img = pixman_image_create_bits(src_format, w, h, (uint32_t*)src_ptr, info.planes[0].stride); @@ -251,7 +257,12 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h) transform_surface = tbm_surface_create(tw, th, tbm_surface_get_format(td->tbm_surface)); EINA_SAFETY_ON_NULL_GOTO(transform_surface, clean_up); - tbm_surface_map(transform_surface, TBM_SURF_OPTION_WRITE, &info); + res = tbm_surface_map(transform_surface, TBM_SURF_OPTION_WRITE, &info); + if (res != TBM_SURFACE_ERROR_NONE) + { + ERR("failed to map tbm_surface_h"); + goto clean_up; + } dst_ptr = info.planes[0].ptr; dst_img = pixman_image_create_bits(dst_format, tw, th, (uint32_t*)dst_ptr, info.planes[0].stride); @@ -284,7 +295,12 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h) c_src_format = _e_capture_image_data_pixman_format_get_from_tbm_surface(tbm_surface_get_format(td->child_data->tbm_surface)); c_dst_format = c_src_format; - tbm_surface_map(td->child_data->tbm_surface, TBM_SURF_OPTION_READ, &c_info); + res = tbm_surface_map(td->child_data->tbm_surface, TBM_SURF_OPTION_READ, &c_info); + if (res != TBM_SURFACE_ERROR_NONE) + { + ERR("failed to map tbm_surface_h"); + goto clean_up; + } c_src_ptr = c_info.planes[0].ptr; c_src_img = pixman_image_create_bits(c_src_format, c_w, c_h, (uint32_t*)c_src_ptr, c_info.planes[0].stride); @@ -329,7 +345,12 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h) c_transform_surface = tbm_surface_create(c_tw, c_th, tbm_surface_get_format(td->child_data->tbm_surface)); EINA_SAFETY_ON_NULL_GOTO(c_transform_surface, clean_up); - tbm_surface_map(c_transform_surface, TBM_SURF_OPTION_WRITE, &c_info); + res = tbm_surface_map(c_transform_surface, TBM_SURF_OPTION_WRITE, &c_info); + if (res != TBM_SURFACE_ERROR_NONE) + { + ERR("failed to map tbm_surface_h"); + goto clean_up; + } c_dst_ptr = c_info.planes[0].ptr; c_dst_img = pixman_image_create_bits(c_dst_format, c_tw, c_th, (uint32_t*)c_dst_ptr, c_info.planes[0].stride); @@ -409,7 +430,13 @@ _e_capture_client_image_data_save(Thread_Data *td) if (transform_surface) { tbm_surface_info_s info; - tbm_surface_map(transform_surface, TBM_SURF_OPTION_READ|TBM_SURF_OPTION_WRITE, &info); + ret = tbm_surface_map(transform_surface, TBM_SURF_OPTION_READ|TBM_SURF_OPTION_WRITE, &info); + if (ret != TBM_SURFACE_ERROR_NONE) + { + ERR("failed to map tbm_surface_h"); + tbm_surface_destroy(transform_surface); + return EINA_FALSE; + } ptr = info.planes[0].ptr; } else -- 2.34.1