e_comp_wl_capture: fix a svace issue not checking return of tbm_surface_map. 52/217452/1
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 12 Nov 2019 02:07:28 +0000 (11:07 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Tue, 12 Nov 2019 02:07:28 +0000 (11:07 +0900)
Change-Id: I698c336a5c5eff30c5f92ad45671db38afaefe23

src/bin/e_comp_wl_capture.c

index c4ee9cd..3789c43 100644 (file)
@@ -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