Fix Svace issues 35/84435/4
authorLi Zhang <li2012.zhang@samsung.com>
Thu, 18 Aug 2016 13:04:37 +0000 (21:04 +0800)
committerLi Zhang <li2012.zhang@samsung.com>
Thu, 18 Aug 2016 13:36:38 +0000 (21:36 +0800)
Change-Id: Ib7c5af995a1f663a49419a4b966765b45d50eabc

ism/modules/imengine/scim_socket_imengine.cpp
ism/src/ltdl.cpp
ism/src/scim_utility.cpp

index c4ab4263ebcc3a902fed2a4efb83bd440dbe1865..265de922bea308d35e3345579f6d011533e8fcb7 100644 (file)
@@ -582,19 +582,23 @@ SocketInstance::SocketInstance (SocketFactory *factory,
 
 SocketInstance::~SocketInstance ()
 {
-    Transaction trans;
+    try {
+        Transaction trans;
 
-    SCIM_DEBUG_IMENGINE(1) << "Destroy IMEngine Instance " << m_peer_id << ".\n";
+        SCIM_DEBUG_IMENGINE(1) << "Destroy IMEngine Instance " << m_peer_id << ".\n";
 
-    m_signal_reconnect_connection.disconnect ();
+        m_signal_reconnect_connection.disconnect ();
 
-    if (m_peer_id >= 0) {
-        global->init_transaction (trans);
+        if (m_peer_id >= 0) {
+            global->init_transaction (trans);
 
-        trans.put_command (SCIM_TRANS_CMD_DELETE_INSTANCE);
-        trans.put_data (m_peer_id);
+            trans.put_command (SCIM_TRANS_CMD_DELETE_INSTANCE);
+            trans.put_data (m_peer_id);
 
-        commit_transaction (trans);
+            commit_transaction (trans);
+        }
+    } catch (Exception & e) {
+        std::cerr << e.what();
     }
 }
 
index da4aa4920d5fa2e3f878d4c0f158aef884d06b3a..28c7cd209c7e9a860661c3f1474d802f21d2c12c 100644 (file)
@@ -2679,8 +2679,8 @@ find_file_callback (
     {
       char *dirend = strrchr (filename, '/');
 
-      if (dirend > filename)
-       *dirend   = LT_EOS_CHAR;
+      if (dirend)
+        *dirend   = LT_EOS_CHAR;
 
       LT_DLFREE (*pdir);
       *pdir   = lt_estrdup (filename);
index 35b6fb04352d39d1a2e5fa797860dbfc4aab8dfe..2503f5dd3aef6a9bf80920f9c56cd72d66727a03 100644 (file)
@@ -152,24 +152,22 @@ utf8_wctomb (unsigned char *dest, ucs4_t wc, int dest_size)
 {
     if (!dest)
         return 0;
-
     int count;
-    if (wc < 0x80) { // most offen case
-        if (dest_size < 1)
-            return RET_TOOSMALL;
-        dest[0] = wc;
-        return 1;
-    }
-    else if (wc < 0x800)
+    unsigned int _wc = wc;
+    if (_wc < 0x80)
+        count = 1;
+    else if (_wc < 0x800)
         count = 2;
-    else if (wc < 0x10000)
+    else if (_wc < 0x10000)
         count = 3;
-    else if (wc < 0x200000)
+    else if (_wc < 0x200000)
         count = 4;
-    else if (wc < 0x4000000)
+    else if (_wc < 0x4000000)
         count = 5;
-    else //if (wc <= 0x7fffffff)
+    else if (_wc <= 0x7fffffff)
         count = 6;
+    else
+        return RET_ILSEQ;
 
     if (dest_size < count)
         return RET_TOOSMALL;