e_info_client/server: fixed null dereference, using uninitialized value, resource... 21/49321/2
authorMinJeong Kim <minjjj.kim@samsung.com>
Mon, 12 Oct 2015 13:08:33 +0000 (22:08 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 13 Oct 2015 00:28:56 +0000 (17:28 -0700)
Change-Id: I06c22ea8b3e5f5c89df84618deae448a5852c5c0

src/bin/e_info_client.c
src/bin/e_info_server.c

index 825aa7b2f3772443aec62419265e8efc92320a43..17949bd0b4ba985841b7d97989b90e834605a63a 100644 (file)
@@ -189,6 +189,7 @@ _directory_make(char *path)
         if (!temp)
           {
              free(buf);
+             free(fullpath);
              return NULL;
           }
         if (path)
@@ -204,6 +205,8 @@ _directory_make(char *path)
 
    if (!(dp = opendir (dir)))
      {
+        free(buf);
+        free(fullpath);
         printf("not exist: %s\n", dir);
         return NULL;
      }
@@ -223,6 +226,7 @@ _directory_make(char *path)
    if ((mkdir(fullpath, 0755)) < 0)
      {
         printf("fail: mkdir '%s'\n", fullpath);
+        free(fullpath);
         return NULL;
      }
 
index b68154768be54a0818045cf640a3fad298f798c5..788f04eb49991836b237823d1db7d9cc1c161da5 100644 (file)
@@ -42,7 +42,7 @@ _msg_clients_append(Eldbus_Message_Iter *iter)
         Eldbus_Message_Iter* struct_of_ec;
         Ecore_Window win;
         uint32_t res_id = 0;
-        pid_t pid;
+        pid_t pid = -1;
 
         ec = evas_object_data_get(o, "E_Client");
         if (!ec) continue;
@@ -55,7 +55,7 @@ _msg_clients_append(Eldbus_Message_Iter *iter)
 #ifdef HAVE_WAYLAND_ONLY
         if (ec->comp_data)
           {
-             E_Comp_Wl_Client_Data *cdata = ec->comp_data;
+             E_Comp_Wl_Client_Data *cdata = (E_Comp_Wl_Client_Data*)ec->comp_data;
              if (cdata->surface)
                wl_client_get_credentials(wl_resource_get_client(cdata->surface), &pid, NULL, NULL);
           }
@@ -118,14 +118,19 @@ _e_info_server_cb_topvwins_dump(const Eldbus_Service_Interface *iface EINA_UNUSE
         snprintf(fname, sizeof(fname), "%s/0x%08x.png", dir, win);
 
 #ifdef HAVE_WAYLAND_ONLY
+        struct wl_shm_buffer *shmbuffer = NULL;
         E_Comp_Wl_Buffer *buffer = e_pixmap_resource_get(ec->pixmap);
         if (!buffer) continue;
 
         if (buffer->type == E_COMP_WL_BUFFER_TYPE_SHM)
           {
-             data = wl_shm_buffer_get_data(wl_shm_buffer_get(buffer->resource));
-             w = wl_shm_buffer_get_stride(wl_shm_buffer_get(buffer->resource))/4;
-             h = wl_shm_buffer_get_height(wl_shm_buffer_get(buffer->resource));
+             shmbuffer = wl_shm_buffer_get(buffer->resource);
+             if (shmbuffer)
+               {
+                  data = wl_shm_buffer_get_data(shmbuffer);
+                  w = wl_shm_buffer_get_stride(shmbuffer)/4;
+                  h = wl_shm_buffer_get_height(shmbuffer);
+               }
           }
         else if (buffer->type == E_COMP_WL_BUFFER_TYPE_NATIVE)
           {