Fix deference of NULL return issues 23/87223/3
authorJihoon Kim <jihoon48.kim@samsung.com>
Wed, 7 Sep 2016 05:51:31 +0000 (14:51 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 7 Sep 2016 07:06:35 +0000 (16:06 +0900)
Return value of a function 'ecore_wl_display_get' is dereferenced at wayland_imcontext.c:2018 without checking, but it is usually checked for this function (7/8).

Return value of a function 'operator new' is dereferenced at scim_transaction.cpp:798 without checking, but it is usually checked for this function (69/79).

Change-Id: I3b1c4d976ff36f1e4e5214e18eee232e844e21d3
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
ism/extras/wayland_immodule/wayland_imcontext.c
ism/src/scim_transaction.cpp

index c9cebeb..012aad3 100644 (file)
@@ -2014,13 +2014,17 @@ wayland_im_context_filter_event(Ecore_IMF_Context    *ctx,
                                        modifiers);
         //Waiting for filter_key_event_done from IME.
         //This function should return IME filtering result with boolean type.
-        while (ecore_time_get() - start_time < WAIT_FOR_FILTER_DONE_SECOND){
-            wl_display_dispatch(ecore_wl_display_get());
-            if (imcontext->last_key_event_filter.serial == serial) {
-                ret = imcontext->last_key_event_filter.state;
-                break;
-            } else if (imcontext->last_key_event_filter.serial > serial)
-                return EINA_FALSE;
+        struct wl_display *display = ecore_wl_display_get();
+        if (display) {
+            while (ecore_time_get() - start_time < WAIT_FOR_FILTER_DONE_SECOND) {
+                wl_display_dispatch(display);
+
+                if (imcontext->last_key_event_filter.serial == serial) {
+                    ret = imcontext->last_key_event_filter.state;
+                    break;
+                } else if (imcontext->last_key_event_filter.serial > serial)
+                    return EINA_FALSE;
+            }
         }
 
         LOGD ("elapsed : %.3f ms, serial (last, require) : (%d, %d)", (ecore_time_get() - start_time)*1000, imcontext->last_key_event_filter.serial, serial);
index 13eb1db..0e6d158 100644 (file)
@@ -795,8 +795,11 @@ TransactionReader::operator = (const TransactionReader &reader)
         delete (m_impl);
     m_impl = new TransactionReaderImpl ();
 
-    m_impl->attach (reader.m_impl->m_holder);
-    m_impl->m_read_pos = reader.m_impl->m_read_pos;
+    if (m_impl) {
+        m_impl->attach (reader.m_impl->m_holder);
+        m_impl->m_read_pos = reader.m_impl->m_read_pos;
+    }
+
     return *this;
 }