summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJihoon Kim <jihoon48.kim@samsung.com>2016-09-07 14:51:31 +0900
committerJihoon Kim <jihoon48.kim@samsung.com>2016-09-07 16:06:35 +0900
commit9593e64a501cd5929933cdface52b3435af40715 (patch)
treed1b77f7a2d6c3703a96ee25fd24a5810e49b087b
parentce00f921b7e4d03d0c9b3379f7bad19034091ab7 (diff)
downloadisf-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.c18
-rw-r--r--ism/src/scim_transaction.cpp7
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;
}