Fix svace issues for Tizen_3.0_TV_Prebeta 91/63491/2 accepted/tizen/common/20160325.135558 accepted/tizen/ivi/20160325.134147 accepted/tizen/mobile/20160325.133920 accepted/tizen/tv/20160325.134049 accepted/tizen/wearable/20160325.134106 submit/tizen/20160325.024841
authorYunmi Ha <yunmi.ha@samsung.com>
Thu, 24 Mar 2016 08:16:25 +0000 (17:16 +0900)
committerYunmi Ha <yunmi.ha@samsung.com>
Thu, 24 Mar 2016 08:38:40 +0000 (01:38 -0700)
replace thread unsafe function- strerror
and change function call order

Change-Id: I8d49b3df607788110538553af57c186df04ed52c

src/common/gum-file.c [changed mode: 0644->0755]
src/daemon/dbus/gumd-dbus-group-service-adapter.c
src/daemon/dbus/gumd-dbus-server-p2p.c [changed mode: 0644->0755]
src/daemon/dbus/gumd-dbus-user-service-adapter.c
src/daemon/main.c [changed mode: 0644->0755]
src/lib/gum-user-service.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index d6f424a..fc071c2
  */
 
 #define GUM_PERM 0777
+#define MAX_STRERROR_LEN       256
 
 static gboolean
 _set_smack64_attr (
@@ -146,7 +147,10 @@ _open_file (
     FILE *fp = NULL;
     if (!fn || !(fp = fopen (fn, mode))) {
         if (!fp)
-            WARN ("Could not open file '%s', error: %s", fn, strerror(errno));
+        {
+            char buf[MAX_STRERROR_LEN];;
+            WARN ("Could not open file '%s', error: %s", fn, strerror_r(errno, buf, MAX_STRERROR_LEN));
+        }
         return NULL;
     }
     return fp;
index 4c734d7..cc4a9c8 100644 (file)
@@ -218,9 +218,9 @@ _dbus_peer_group_remove (
     if (peer_group && GUMD_IS_DBUS_GROUP_ADAPTER(peer_group->dbus_group)) {
         g_object_weak_unref (G_OBJECT (peer_group->dbus_group),
                 _on_dbus_group_adapter_disposed, group_data);
-        _dbus_peer_group_free (peer_group, NULL);
         self->priv->peer_groups = g_list_remove (self->priv->peer_groups,
                 (gpointer)peer_group);
+        _dbus_peer_group_free (peer_group, NULL);
     }
 }
 
@@ -355,10 +355,10 @@ _clear_cache_for_peer_name (
         DBG ("removing dbus group '%p' from cache", peer_group->dbus_group);
         g_object_weak_unref (G_OBJECT (peer_group->dbus_group),
                 _on_dbus_group_adapter_disposed, peer_group->group_service);
-        _dbus_peer_group_free (peer_group, NULL);
         group_data->group_service->priv->peer_groups = g_list_remove (
                 group_data->group_service->priv->peer_groups,
                 (gpointer)peer_group);
+        _dbus_peer_group_free (peer_group, NULL);
     }
 }
 
@@ -418,10 +418,10 @@ _clear_cache_for_group (
     if (peer_group->dbus_group == group_data->dbus_group) {
         DBG ("removing dbus group '%p' from cache", peer_group->dbus_group);
         peer_group->dbus_group = NULL;
-        _dbus_peer_group_free (peer_group, NULL);
         group_data->group_service->priv->peer_groups = g_list_remove (
                 group_data->group_service->priv->peer_groups,
                 (gpointer)peer_group);
+        _dbus_peer_group_free (peer_group, NULL);
     }
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index b0efc4d..ad386c7
@@ -85,6 +85,8 @@ G_DEFINE_TYPE_WITH_CODE (GumdDbusServerP2P,
 #define GUMD_DBUS_SERVER_P2P_GET_PRIV(obj) G_TYPE_INSTANCE_GET_PRIVATE ((obj),\
         GUMD_TYPE_DBUS_SERVER_P2P, GumdDbusServerP2PPrivate)
 
+#define MAX_STRERROR_LEN       256
+
 static void
 _set_property (
         GObject *object,
@@ -394,8 +396,9 @@ _gumd_dbus_server_p2p_start (
         path = g_strstr_len(server->priv->address, -1, "unix:path=") + 10;
         if (path) {
             if (g_chmod (path, S_IRUSR | S_IWUSR) < 0) {
+                gchar buf[MAX_STRERROR_LEN];
                 WARN("Setting server socket permission failed with error '%s'",
-                    strerror(errno));
+                    strerror_r(errno, buf, MAX_STRERROR_LEN));
             }
         }
     }
@@ -493,8 +496,9 @@ gumd_dbus_server_p2p_new_with_address (
             gchar *base_path = g_path_get_dirname (file_path);
             if (g_mkdir_with_parents (base_path, S_IRUSR | S_IWUSR | S_IXUSR)
                     == -1) {
+                gchar buf[MAX_STRERROR_LEN];
                 WARN ("Could not create '%s', error: %s", base_path,
-                        strerror(errno));
+                    strerror_r(errno, buf, MAX_STRERROR_LEN));
             }
             g_free (base_path);
         }
index 08708d9..9c15f89 100644 (file)
@@ -224,9 +224,9 @@ _dbus_peer_user_remove (
     if (peer_user && GUMD_IS_DBUS_USER_ADAPTER(peer_user->user_adapter)) {
         g_object_weak_unref (G_OBJECT (peer_user->user_adapter),
                 _on_dbus_user_adapter_disposed, user_data);
-        _dbus_peer_user_free (peer_user, NULL);
         self->priv->peer_users = g_list_remove (self->priv->peer_users,
                 (gpointer)peer_user);
+        _dbus_peer_user_free (peer_user, NULL);
     }
 }
 
@@ -362,10 +362,10 @@ _clear_cache_for_peer_name (
                 peer_user->user_adapter, peer_user->peer_name);
         g_object_weak_unref (G_OBJECT (peer_user->user_adapter),
                 _on_dbus_user_adapter_disposed, peer_user->user_service);
-        _dbus_peer_user_free (peer_user, NULL);
         user_data->user_service->priv->peer_users = g_list_remove (
                 user_data->user_service->priv->peer_users,
                 (gpointer)peer_user);
+        _dbus_peer_user_free (peer_user, NULL);
     }
 }
 
@@ -426,10 +426,10 @@ _clear_cache_for_user (
         DBG ("removing dbus user adapter '%p' from cache",
                 peer_user->user_adapter);
         peer_user->user_adapter = NULL;
-        _dbus_peer_user_free (peer_user, NULL);
         user_data->user_service->priv->peer_users = g_list_remove (
                 user_data->user_service->priv->peer_users,
                 (gpointer)peer_user);
+        _dbus_peer_user_free (peer_user, NULL);
     }
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 0ac7791..78311e4
@@ -159,6 +159,12 @@ main (int argc, char **argv)
 
     gid_t daemon_gid;
     struct group *daemon_group = NULL;
+    struct group buf_group;
+    gchar *buf = NULL;
+    gchar *tmp = NULL;
+    gsize buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
+    if (buflen<sizeof(struct group))
+        buflen = 1024;
 
 #if !GLIB_CHECK_VERSION (2, 36, 0)
     g_type_init ();
@@ -180,9 +186,21 @@ main (int argc, char **argv)
 
     DBG ("Before set: r-gid %d e-gid %d", getgid (), getegid ());
     daemon_gid = getgid ();
-    daemon_group = getgrnam ("gumd");
+
+    for (; NULL != (tmp = g_realloc(buf, buflen)); buflen*=2)
+    {
+        buf = tmp;
+        if (ERANGE == getgrnam_r("gumd", &buf_group, buf, buflen, &daemon_group))
+            continue;
+        else
+            break;
+    }
     if (daemon_group)
         daemon_gid = daemon_group->gr_gid;
+
+    if (buf)
+        g_free(buf);
+
     if (setegid (daemon_gid))
         WARN ("setegid() failed");
     DBG ("After set: r-gid %d e-gid %d", getgid (), getegid ());
old mode 100644 (file)
new mode 100755 (executable)
index 09fde3b..d46c072
@@ -298,7 +298,7 @@ static gboolean
 _service_dbus_proxy_callback (
         gpointer user_data)
 {
-    g_return_if_fail (user_data && GUM_IS_USER_SERVICE (user_data));
+    g_return_val_if_fail (user_data && GUM_IS_USER_SERVICE (user_data), FALSE);
     const gchar *env = NULL;
     GumDbusUserService *dbus_service = NULL;
     GDBusConnection *connection = NULL;