diff options
author | Jihoon Kim <jihoon48.kim@samsung.com> | 2016-09-07 14:51:31 +0900 |
---|---|---|
committer | Jihoon Kim <jihoon48.kim@samsung.com> | 2016-09-07 16:06:35 +0900 |
commit | 9593e64a501cd5929933cdface52b3435af40715 (patch) | |
tree | d1b77f7a2d6c3703a96ee25fd24a5810e49b087b | |
parent | ce00f921b7e4d03d0c9b3379f7bad19034091ab7 (diff) | |
download | isf-9593e64a501cd5929933cdface52b3435af40715.tar.gz isf-9593e64a501cd5929933cdface52b3435af40715.tar.bz2 isf-9593e64a501cd5929933cdface52b3435af40715.zip |
Fix deference of NULL return issues
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>
-rw-r--r-- | ism/extras/wayland_immodule/wayland_imcontext.c | 18 | ||||
-rw-r--r-- | ism/src/scim_transaction.cpp | 7 |
2 files changed, 16 insertions, 9 deletions
diff --git a/ism/extras/wayland_immodule/wayland_imcontext.c b/ism/extras/wayland_immodule/wayland_imcontext.c index c9cebeb8..012aad30 100644 --- a/ism/extras/wayland_immodule/wayland_imcontext.c +++ b/ism/extras/wayland_immodule/wayland_imcontext.c @@ -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); diff --git a/ism/src/scim_transaction.cpp b/ism/src/scim_transaction.cpp index 13eb1db2..0e6d1587 100644 --- a/ism/src/scim_transaction.cpp +++ b/ism/src/scim_transaction.cpp @@ -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; } |