Fixed Bug # TIVI-2988 92/21492/1 submit/tizen/20140522.082603 submit/tizen/20140522.082632
authorImran Zaman <imran.zaman@intel.com>
Wed, 21 May 2014 15:33:24 +0000 (18:33 +0300)
committerImran Zaman <imran.zaman@intel.com>
Wed, 21 May 2014 15:34:15 +0000 (18:34 +0300)
Bug is caused by invalid free. Besides logs are updated.

Change-Id: I9b32322b1045ef639f28624edb547ded263b0806
Signed-off-by: Imran Zaman <imran.zaman@intel.com>
19 files changed:
dists/rpm/gum-suse.spec
dists/rpm/tizen/packaging/gumd.changes
docs/html/GumConfig.html
docs/html/GumDisposable.html
docs/html/ch01.html
docs/html/ch02.html
docs/html/ch03.html
docs/html/ch04.html
docs/html/ch05.html
docs/html/gumd-examples.html
docs/html/um-intro.html
packaging/gumd.changes
src/common/gum-disposable.c
src/common/gum-file.c
src/daemon/dbus/gumd-dbus-user-adapter.c
src/daemon/dbus/gumd-dbus-user-adapter.h
src/daemon/dbus/gumd-dbus-user-service-adapter.c
src/daemon/gumd-daemon-user.c
test/data/gum-test.conf [deleted file]

index a85acf8..d997794 100644 (file)
@@ -131,6 +131,14 @@ groupadd -f -r gumd
 
 
 %changelog
+* Wed May 21 2014 Imran Zaman <imran.zaman@intel.com>
+- Fixed Bug # TIVI-2988
+- Updated logs
+
+* Tue May 20 2014 Imran Zaman <imran.zaman@intel.com>
+- Fixed bug#TIVI-3170 (fixed smack labels for newly created files and folders
+  as reported in https://bugs.tizen.org/jira/browse/TIVI-3170)
+
 * Wed Feb 12 2014 Imran Zaman <imran.zaman@intel.com>
 - Simplified gumd packages
 
index 5185824..e2ad92c 100644 (file)
@@ -1,3 +1,7 @@
+* Wed May 21 2014 Imran Zaman <imran.zaman@intel.com>
+- Fixed Bug # TIVI-2988
+- Updated logs
+
 * Tue May 20 2014 Imran Zaman <imran.zaman@intel.com>
 - Fixed bug#TIVI-3170 (fixed smack labels for newly created files and folders
   as reported in https://bugs.tizen.org/jira/browse/TIVI-3170)
index 09d2792..0b1c35f 100644 (file)
@@ -87,7 +87,7 @@ for where the file is searched for.
 <p>
 </p>
 <div class="refsect1">
-<a name="idp7559152"></a><h2>Usage</h2>
+<a name="idp8632144"></a><h2>Usage</h2>
 </div>
 <p>
 Following code snippet demonstrates how to create and use config object:
@@ -105,7 +105,7 @@ g_object_unref(config);
 <p>
 </p>
 <div class="refsect1">
-<a name="idp1785408"></a><h2>Where the configuration file is searched for</h2>
+<a name="idp10621104"></a><h2>Where the configuration file is searched for</h2>
 </div>
 <p>
 </p>
@@ -127,7 +127,7 @@ $(sysconfdir) + "gum.conf"
 <p>
 </p>
 <div class="refsect1">
-<a name="idp6614192"></a><h2>Example configuration file</h2>
+<a name="idp6130512"></a><h2>Example configuration file</h2>
 </div>
 <p>
 </p>
index 1beaa92..03a47b7 100644 (file)
@@ -90,7 +90,7 @@ be required to destory after some period of inactivity.
 <p>
 </p>
 <div class="refsect1">
-<a name="idp11399872"></a><h2>Usage</h2>
+<a name="idp9661872"></a><h2>Usage</h2>
 </div>
 <p>
 Following code snippet demonstrates how to derive and use <a class="link" href="GumDisposable.html" title="GumDisposable"><span class="type">GumDisposable</span></a>:
index aefd811..60953d4 100644 (file)
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp4276848"></a>Daemon (gumd) configuration</h2></div></div></div>
+<a name="idp2867440"></a>Daemon (gumd) configuration</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="GumConfig.html">GumConfig</a></span><span class="refpurpose"> — gum configuration information</span>
index dd746a1..838b83b 100644 (file)
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp4483936"></a>Common</h2></div></div></div>
+<a name="idp4039472"></a>Common</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="gumd-GumDictionary.html">GumDictionary</a></span><span class="refpurpose"> — a dictionary container holding string keys and variant
index a0983fd..488900e 100644 (file)
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp5022160"></a>Client library (libgum) interface</h2></div></div></div>
+<a name="idp3972112"></a>Client library (libgum) interface</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="GumUser.html">GumUser</a></span><span class="refpurpose"> — provides interface for managing user's account</span>
index 70f625f..44990a4 100644 (file)
@@ -54,7 +54,7 @@
 </table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp3801520"></a>Appendices</h2></div></div></div>
+<a name="idp3804032"></a>Appendices</h2></div></div></div>
 <a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3>
 <dt>
 <a class="link" href="GumConfig.html#GumConfig-struct" title="struct GumConfig">GumConfig</a>, struct in <a class="link" href="GumConfig.html" title="GumConfig">GumConfig</a>
index e39dd8f..be4372d 100644 (file)
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="idp2313728"></a>Deprecated APIs</h2></div></div></div>
+<a name="idp2507456"></a>Deprecated APIs</h2></div></div></div>
 <a name="idx"></a>
 </div>
 <div class="footer">
index 97c1421..3151753 100644 (file)
@@ -45,7 +45,7 @@
      </p>
 </div>
 <div class="refsect1">
-<a name="idp10497856"></a><h2>Add User</h2>
+<a name="idp10710240"></a><h2>Add User</h2>
 <p>
         User can be added with flag <strong class="userinput"><code>--add-user</code></strong>:
         </p>
@@ -74,7 +74,7 @@
      </p>
 </div>
 <div class="refsect1">
-<a name="idp7388144"></a><h2>Delete User</h2>
+<a name="idp10525904"></a><h2>Delete User</h2>
 <p>
         User can be deleted with flag <strong class="userinput"><code>--delete-user</code></strong>:
         </p>
@@ -89,7 +89,7 @@
      </p>
 </div>
 <div class="refsect1">
-<a name="idp11509824"></a><h2>Update User</h2>
+<a name="idp9269376"></a><h2>Update User</h2>
 <p>
         User can be update with flag <strong class="userinput"><code>--update-user</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp14110128"></a><h2>Get User</h2>
+<a name="idp14484976"></a><h2>Get User</h2>
 <p>
         User data can be retrieved with flag <strong class="userinput"><code>--get-user</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp14114688"></a><h2>Get User By Name</h2>
+<a name="idp13118528"></a><h2>Get User By Name</h2>
 <p>
         User data can be retrieved with flag <strong class="userinput"><code>--get-user-by-name</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp14047984"></a><h2>Add Group</h2>
+<a name="idp13123040"></a><h2>Add Group</h2>
 <p>
         Group can be added with flag <strong class="userinput"><code>--add-group</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp13000656"></a><h2>Delete Group</h2>
+<a name="idp14060912"></a><h2>Delete Group</h2>
 <p>
         Group can be deleted with flag <strong class="userinput"><code>--delete-group</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp13005168"></a><h2>Update Group</h2>
+<a name="idp14065424"></a><h2>Update Group</h2>
 <p>
         Group can be updated with flag <strong class="userinput"><code>--udpate-group</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp14051792"></a><h2>Get Group</h2>
+<a name="idp14070016"></a><h2>Get Group</h2>
 <p>
         Group data can be retrieved with flag <strong class="userinput"><code>--get-group</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp12475616"></a><h2>Get Group By Name</h2>
+<a name="idp14074528"></a><h2>Get Group By Name</h2>
 <p>
         Group data can be retrieved with flag <strong class="userinput"><code>--get-group-by-name</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp12480128"></a><h2>Add member To Group</h2>
+<a name="idp12776176"></a><h2>Add member To Group</h2>
 <p>
         New member can be added to a group with flag <strong class="userinput"><code>--add-member</code></strong>:
         </p>
      </p>
 </div>
 <div class="refsect1">
-<a name="idp12484688"></a><h2>Delete member From Group</h2>
+<a name="idp12780736"></a><h2>Delete member From Group</h2>
 <p>
         A member can be removed from the group with flag <strong class="userinput"><code>--delete-member</code></strong>:
         </p>
index aeb02d9..ae99b5e 100644 (file)
@@ -22,7 +22,7 @@
 <div class="refentry">
 <a name="um-intro"></a><div class="titlepage"></div>
 <div class="refsect1">
-<a name="idp7646560"></a><h2>What is gumd/libgum?</h2>
+<a name="idp10274512"></a><h2>What is gumd/libgum?</h2>
 <p>
         gumd and libgum together provides a framework for creating, deleting
         and modifying user and groups in the system. gumd is a daemon that
index 5185824..e2ad92c 100644 (file)
@@ -1,3 +1,7 @@
+* Wed May 21 2014 Imran Zaman <imran.zaman@intel.com>
+- Fixed Bug # TIVI-2988
+- Updated logs
+
 * Tue May 20 2014 Imran Zaman <imran.zaman@intel.com>
 - Fixed bug#TIVI-3170 (fixed smack labels for newly created files and folders
   as reported in https://bugs.tizen.org/jira/browse/TIVI-3170)
index 01ef7b8..c6c3001 100644 (file)
@@ -281,7 +281,7 @@ gum_disposable_init (
     self->priv->delete_later = FALSE;
     g_atomic_int_set(&self->priv->keep_obj_counter, 0);
 
-    DBG ("INIT");
+    DBG ("init %p", self);
 }
 
 static gboolean
@@ -293,7 +293,7 @@ _auto_dispose (
     GumDisposable *self = GUM_DISPOSABLE (user_data);
     g_signal_emit (self, signals[SIG_DISPOSING], 0);
     /* destroy object */
-    DBG ("%s AUTO DISPOSE %d", G_OBJECT_TYPE_NAME (self),
+    DBG ("%s (%p) auto dispose %d", G_OBJECT_TYPE_NAME (self), self,
             G_OBJECT (self)->ref_count);
     g_object_unref (G_OBJECT (self));
     return FALSE;
@@ -306,7 +306,7 @@ _timer_dispose (
     g_return_val_if_fail (user_data && GUM_IS_DISPOSABLE (user_data), FALSE);
     GumDisposable *self = GUM_DISPOSABLE (user_data);
 
-    DBG ("%s TIMER DISPOSE", G_OBJECT_TYPE_NAME (self));
+    DBG ("%s (%p) timer dispose", G_OBJECT_TYPE_NAME (self), self);
     /* clear out timer since we are already inside timer cb */
     self->priv->timer_id = 0;
 
@@ -317,6 +317,8 @@ static void
 _update_timer (
         GumDisposable *self)
 {
+    if (self->priv->delete_later) return;
+
     DBG("%s (%p): keep_obj_counter : %d, timeout : %d  delete_later %d",
             G_OBJECT_TYPE_NAME(self),
             self,
@@ -324,11 +326,8 @@ _update_timer (
             self->priv->timeout,
             self->priv->delete_later);
 
-    if (self->priv->delete_later) return;
-
     if (g_atomic_int_get(&self->priv->keep_obj_counter) == 0) {
         if (self->priv->timeout) {
-            DBG("Setting object timeout to %d", self->priv->timeout);
             self->priv->timer_id = g_timeout_add_seconds (self->priv->timeout,
                     _timer_dispose,
                     self);
@@ -397,8 +396,7 @@ gum_disposable_delete_later (
     if (self->priv->timer_id)
         g_source_remove (self->priv->timer_id);
 
-    INFO ("Object '%s' (%p) about to dispose...",
-            G_OBJECT_TYPE_NAME (self), self);
+    DBG ("object (%p) '%s' about to dispose", self, G_OBJECT_TYPE_NAME (self));
     self->priv->timer_id = g_idle_add (_auto_dispose, self);
     self->priv->delete_later = TRUE;
 }
index 8fe4df8..e47a142 100644 (file)
@@ -120,9 +120,9 @@ _set_smack64_attr (
     config = gum_config_new ();
     const gchar *smack_label = gum_config_get_string (config, key);
     if (smack_label) {
+        len = strlen (smack_label);
         DBG ("Set smack label %s for path %s with len %d",smack_label, path,
                 (int)len);
-        len = strlen (smack_label);
     }
     /*
      * Set smack64 extended attribute (when provided in the config file)
index 7ba9f5d..45f6b79 100644 (file)
@@ -114,6 +114,7 @@ _dispose (
         GObject *object)
 {
     GumdDbusUserAdapter *self = GUMD_DBUS_USER_ADAPTER (object);
+    DBG ("user adapter (%p) dispose beg", object);
 
     GUM_OBJECT_UNREF (self->priv->daemon);
     GUM_OBJECT_UNREF (self->priv->user);
@@ -132,6 +133,7 @@ _dispose (
     GUM_OBJECT_UNREF (self->priv->connection);
 
     G_OBJECT_CLASS (gumd_dbus_user_adapter_parent_class)->dispose (object);
+    DBG ("user adapter (%p) dispose", object);
 }
 
 static void
@@ -139,7 +141,7 @@ _finalize (
         GObject *object)
 {
     //GumdDbusUserAdapter *self = GUMD_DBUS_USER_ADAPTER (object);
-
+    DBG ("user adapter (%p) finalize", object);
     G_OBJECT_CLASS (gumd_dbus_user_adapter_parent_class)->finalize (object);
 }
 
@@ -354,24 +356,6 @@ gumd_dbus_user_adapter_init (
 }
 
 GumdDbusUserAdapter *
-gumd_dbus_user_adapter_new (
-        GumdDaemonUser *user,
-        guint timeout)
-{
-    GError *error = NULL;
-    GDBusConnection *connection = g_bus_get_sync (GUM_BUS_TYPE, NULL,
-            &error);
-    if (error) {
-        WARN("failed to connect to session bus : %s", error->message);
-        g_error_free (error);
-        return NULL;
-    }
-
-    return gumd_dbus_user_adapter_new_with_connection (connection, user,
-            timeout);
-}
-
-GumdDbusUserAdapter *
 gumd_dbus_user_adapter_new_with_connection (
         GDBusConnection *bus_connection,
         GumdDaemonUser *user,
index 55ca2c7..6088969 100644 (file)
@@ -67,11 +67,6 @@ gumd_dbus_user_adapter_get_type (
                void) G_GNUC_CONST;
 
 GumdDbusUserAdapter *
-gumd_dbus_user_adapter_new (
-        GumdDaemonUser *user,
-        guint timeout);
-
-GumdDbusUserAdapter *
 gumd_dbus_user_adapter_new_with_connection (
         GDBusConnection *connection,
         GumdDaemonUser *user,
index c5fb263..8e8683a 100644 (file)
@@ -49,7 +49,7 @@ static GParamSpec *properties[N_PROPERTIES];
 typedef struct
 {
     gchar *peer_name;
-    GumdDbusUserAdapter *dbus_user;
+    GumdDbusUserAdapter *user_adapter;
     GumdDbusUserServiceAdapter *user_service;
 }PeerUserService;
 
@@ -189,11 +189,11 @@ static PeerUserService *
 _dbus_peer_user_new (
         GumdDbusUserServiceAdapter *self,
         gchar *peer_name,
-        GumdDbusUserAdapter *dbus_user)
+        GumdDbusUserAdapter *user_adapter)
 {
     PeerUserService *peer_user = g_malloc0 (sizeof (PeerUserService));
     peer_user->peer_name = peer_name;
-    peer_user->dbus_user = dbus_user;
+    peer_user->user_adapter = user_adapter;
     peer_user->user_service = self;
     return peer_user;
 }
@@ -205,7 +205,7 @@ _dbus_peer_user_free (
 {
     if (peer_user) {
         GUM_STR_FREE (peer_user->peer_name);
-        GUM_OBJECT_UNREF (peer_user->dbus_user);
+        GUM_OBJECT_UNREF (peer_user->user_adapter);
         peer_user->user_service = NULL;
         g_free (peer_user);
     }
@@ -218,8 +218,8 @@ _dbus_peer_user_remove (
 {
     GumdDbusUserServiceAdapter *self = GUMD_DBUS_USER_SERVICE_ADAPTER (
             user_data);
-    if (peer_user && GUMD_IS_DBUS_USER_ADAPTER(peer_user->dbus_user)) {
-        g_object_weak_unref (G_OBJECT (peer_user->dbus_user),
+    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,
@@ -233,7 +233,7 @@ _dispose (
 {
     GumdDbusUserServiceAdapter *self = GUMD_DBUS_USER_SERVICE_ADAPTER (object);
 
-    DBG("- unregistering dbus user service. %d",
+    DBG("- unregistering dbus user service adapter (%p). %d", object,
             G_OBJECT (self->priv->daemon)->ref_count);
 
     if (self->priv->peer_users) {
@@ -261,6 +261,7 @@ _dispose (
 
     G_OBJECT_CLASS (gumd_dbus_user_service_adapter_parent_class)->dispose (
             object);
+    DBG ("user service adapter (%p) dispose end", object);
 }
 
 static void
@@ -268,12 +269,14 @@ _finalize (
         GObject *object)
 {
     GumdDbusUserServiceAdapter *self = GUMD_DBUS_USER_SERVICE_ADAPTER (object);
+    DBG ("user service adapter (%p) finalise beg", object);
 
     if (self->priv->peer_users) {
         g_list_free (self->priv->peer_users);
         self->priv->peer_users = NULL;
     }
 
+    DBG ("user service adapter (%p) finalize end", object);
     G_OBJECT_CLASS (gumd_dbus_user_service_adapter_parent_class)->finalize (
             object);
 }
@@ -337,12 +340,12 @@ _clear_cache_for_peer_name (
         PeerUserService *user_data)
 {
     g_return_if_fail (peer_user && user_data);
-    g_return_if_fail (GUMD_IS_DBUS_USER_ADAPTER (peer_user->dbus_user));
+    g_return_if_fail (GUMD_IS_DBUS_USER_ADAPTER (peer_user->user_adapter));
 
     if (g_strcmp0 (peer_user->peer_name, user_data->peer_name) == 0) {
         DBG ("removing dbus user '%p' for peer name %s from cache",
-                peer_user->dbus_user, peer_user->peer_name);
-        g_object_weak_unref (G_OBJECT (peer_user->dbus_user),
+                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 (
@@ -367,7 +370,7 @@ _on_bus_name_lost (
     DBG ("(-)peer disappeared : %s", peer_name);
 
     peer_user.peer_name = (gchar *)peer_name;
-    peer_user.dbus_user = NULL;
+    peer_user.user_adapter = NULL;
     peer_user.user_service = self;
     g_list_foreach (self->priv->peer_users, (GFunc)_clear_cache_for_peer_name,
             (gpointer)&peer_user);
@@ -378,7 +381,7 @@ _on_bus_name_lost (
 static void
 _add_bus_name_watcher (
         GumdDbusUserServiceAdapter *self,
-        GumdDbusUserAdapter *dbus_user,
+        GumdDbusUserAdapter *user_adapter,
         GDBusMethodInvocation *invocation)
 {
     if (self->priv->dbus_server_type == GUMD_DBUS_SERVER_BUSTYPE_MSG_BUS) {
@@ -402,11 +405,12 @@ _clear_cache_for_user (
         PeerUserService *user_data)
 {
     g_return_if_fail (peer_user && user_data);
-    g_return_if_fail (GUMD_IS_DBUS_USER_ADAPTER (peer_user->dbus_user));
+    g_return_if_fail (GUMD_IS_DBUS_USER_ADAPTER (peer_user->user_adapter));
 
-    if (peer_user->dbus_user == user_data->dbus_user) {
-        DBG ("removing dbus user '%p' from cache", peer_user->dbus_user);
-        peer_user->dbus_user = NULL;
+    if (peer_user->user_adapter == user_data->user_adapter) {
+        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,
@@ -425,7 +429,7 @@ _on_dbus_user_adapter_disposed (
 
     DBG ("Dbus user adapter object %p disposed", object);
 
-    peer_user.dbus_user = GUMD_DBUS_USER_ADAPTER (object);
+    peer_user.user_adapter = GUMD_DBUS_USER_ADAPTER (object);
     peer_user.user_service = self;
     g_list_foreach (self->priv->peer_users, (GFunc)_clear_cache_for_user,
             (gpointer)&peer_user);
@@ -454,7 +458,7 @@ _get_sender (
 }
 
 static GumdDbusUserAdapter *
-_create_and_cache_dbus_user (
+_create_and_cache_user_adapter (
         GumdDbusUserServiceAdapter *self,
         GumdDaemonUser *user,
         GDBusMethodInvocation *invocation)
@@ -462,7 +466,7 @@ _create_and_cache_dbus_user (
     GDBusConnection *connection = g_dbus_method_invocation_get_connection (
             invocation);
 
-    GumdDbusUserAdapter *dbus_user =
+    GumdDbusUserAdapter *user_adapter =
             gumd_dbus_user_adapter_new_with_connection (
                     g_object_ref (connection), user,
                     gumd_daemon_get_user_timeout (self->priv->daemon));
@@ -473,23 +477,24 @@ _create_and_cache_dbus_user (
 
     self->priv->peer_users = g_list_append (self->priv->peer_users,
             _dbus_peer_user_new (self, _get_sender (self, invocation),
-                    dbus_user));
-    g_object_weak_ref (G_OBJECT (dbus_user), _on_dbus_user_adapter_disposed,
+                    user_adapter));
+    g_object_weak_ref (G_OBJECT (user_adapter), _on_dbus_user_adapter_disposed,
             self);
 
     /* watchers used for msg-bus only */
-    _add_bus_name_watcher (self, dbus_user, invocation);
+    _add_bus_name_watcher (self, user_adapter, invocation);
 
-    return dbus_user;
+    DBG ("created user adapter %p for user %p", user_adapter, user);
+    return user_adapter;
 }
 
 static GumdDbusUserAdapter *
-_get_dbus_user_from_cache (
+_get_user_adapter_from_cache (
         GumdDbusUserServiceAdapter *self,
         GDBusMethodInvocation *invocation,
         uid_t uid)
 {
-    GumdDbusUserAdapter *dbus_user = NULL;
+    GumdDbusUserAdapter *user_adapter = NULL;
     PeerUserService *peer_user = NULL;
     GList *list = self->priv->peer_users;
     gchar *peer_name = NULL;
@@ -504,19 +509,20 @@ _get_dbus_user_from_cache (
     for ( ; list != NULL; list = g_list_next (list)) {
         peer_user = (PeerUserService *) list->data;
         if (g_strcmp0 (peer_name, peer_user->peer_name) == 0 &&
-            gumd_dbus_user_adapter_get_uid (peer_user->dbus_user) == uid) {
+            gumd_dbus_user_adapter_get_uid (peer_user->user_adapter) == uid) {
 
-            g_object_get (G_OBJECT (peer_user->dbus_user), "delete-later",
+            g_object_get (G_OBJECT (peer_user->user_adapter), "delete-later",
                     &delete_later, NULL);
             if (!delete_later) {
-                dbus_user = peer_user->dbus_user;
+                user_adapter = peer_user->user_adapter;
                 break;
             }
         }
     }
     g_free (peer_name);
 
-    return dbus_user;
+    DBG ("user adapter %p", user_adapter);
+    return user_adapter;
 }
 
 static gboolean
@@ -530,16 +536,17 @@ _handle_create_new_user (
 
     g_return_val_if_fail (self && GUMD_IS_DBUS_USER_SERVICE_ADAPTER(self),
             FALSE);
+    DBG ("");
 
     gum_disposable_set_auto_dispose (GUM_DISPOSABLE (self), FALSE);
 
     user = gumd_daemon_user_new (gumd_daemon_get_config (self->priv->daemon));
     if (user) {
-        GumdDbusUserAdapter *dbus_user = _create_and_cache_dbus_user (self,
-                user, invocation);
+        GumdDbusUserAdapter *user_adapter = _create_and_cache_user_adapter (
+                self, user, invocation);
         gum_dbus_user_service_complete_create_new_user (
                 self->priv->dbus_user_service, invocation,
-                gumd_dbus_user_adapter_get_object_path (dbus_user));
+                gumd_dbus_user_adapter_get_object_path (user_adapter));
     } else {
         g_dbus_method_invocation_return_gerror (invocation, error);
         g_error_free (error);
@@ -558,21 +565,24 @@ _handle_get_user (
 {
     GumdDaemonUser *user = NULL;
     GError *error = NULL;
-    GumdDbusUserAdapter *dbus_user = NULL;
+    GumdDbusUserAdapter *user_adapter = NULL;
+    DBG ("uid %d", uid);
 
     gum_disposable_set_auto_dispose (GUM_DISPOSABLE (self), FALSE);
 
-    dbus_user = _get_dbus_user_from_cache (self, invocation, uid);
-    if (!dbus_user) {
+    user_adapter = _get_user_adapter_from_cache (self, invocation, uid);
+    if (!user_adapter) {
        user = gumd_daemon_get_user (self->priv->daemon, (uid_t)uid, &error);
        if (user) {
-               dbus_user = _create_and_cache_dbus_user (self, user, invocation);
+            user_adapter = _create_and_cache_user_adapter (self, user,
+                invocation);
        }
     }
 
-    if (dbus_user) {
+    if (user_adapter) {
         gum_dbus_user_service_complete_get_user (self->priv->dbus_user_service,
-                invocation, gumd_dbus_user_adapter_get_object_path (dbus_user));
+                invocation, gumd_dbus_user_adapter_get_object_path (
+                        user_adapter));
     } else {
         if (!error) {
             error = GUM_GET_ERROR_FOR_ID (GUM_ERROR_USER_NOT_FOUND,
@@ -596,26 +606,29 @@ _handle_get_user_by_name (
 {
     GumdDaemonUser *user = NULL;
     GError *error = NULL;
-    GumdDbusUserAdapter *dbus_user = NULL;
+    GumdDbusUserAdapter *user_adapter = NULL;
     uid_t uid = GUM_USER_INVALID_UID;
 
+    DBG ("username %s", username);
+
     gum_disposable_set_auto_dispose (GUM_DISPOSABLE (self), FALSE);
 
     uid = gumd_daemon_user_get_uid_by_name (username, gumd_daemon_get_config (
                self->priv->daemon));
 
-    dbus_user = _get_dbus_user_from_cache (self, invocation, uid);
-    if (!dbus_user) {
+    user_adapter = _get_user_adapter_from_cache (self, invocation, uid);
+    if (!user_adapter) {
         user = gumd_daemon_get_user (self->priv->daemon, (uid_t)uid, &error);
         if (user) {
-            dbus_user = _create_and_cache_dbus_user (self, user, invocation);
+            user_adapter = _create_and_cache_user_adapter (self, user,
+                    invocation);
         }
     }
 
-    if (dbus_user) {
+    if (user_adapter) {
         gum_dbus_user_service_complete_get_user_by_name (
                        self->priv->dbus_user_service, invocation,
-                       gumd_dbus_user_adapter_get_object_path (dbus_user));
+                gumd_dbus_user_adapter_get_object_path (user_adapter));
     } else {
         if (!error) {
             error = GUM_GET_ERROR_FOR_ID (GUM_ERROR_USER_NOT_FOUND,
index a3213c7..f4e4bb6 100644 (file)
@@ -968,7 +968,7 @@ _lock_shadow_entry (
                     gboolean lock = *((gboolean *)user_data);
                     struct spwd *spent = g_malloc0 (sizeof (struct spwd));
                     _copy_shadow_struct (entry, spent, FALSE);
-                    g_free (spent->sp_pwdp);
+                    GUM_STR_FREE (spent->sp_pwdp);
                     if (lock && entry->sp_pwdp[0] != '!') {
                         /* entry is unlocked, lock it */
                         spent->sp_pwdp = g_strdup_printf ("!%s",entry->sp_pwdp);
@@ -1357,7 +1357,7 @@ _terminate_user (
 
     proxy = g_dbus_proxy_new_sync (connection,
         G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, NULL,
-        "org.freedesktop.login1", //destintation
+        "org.freedesktop.login1", //destination
         "/org/freedesktop/login1", //path
         "org.freedesktop.login1.Manager", //interface
         NULL, &error);
diff --git a/test/data/gum-test.conf b/test/data/gum-test.conf
deleted file mode 100644 (file)
index 325554c..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# gumd Configuration file.
-#
-
-#
-# This group contains top-level settings.
-#
-[General]
-
-# Comma separate listed of groups, which every user (other than system user)
-# will be added to at the time of user account creation. Default value is:
-# ''
-DEFAULT_USR_GROUPS=
-
-# Comma separate listed of groups, which admin user will be added to at the
-# time of user account creation. Default value is: ''
-#DEFAULT_ADMIN_GROUPS=
-
-# Path to passwd file which represents user information. Default is
-# /etc/passwd. More information about the file format can be read at the
-# manpages for 'passwd'.
-# Can be overriden in debug builds by setting UM_PASSWD_FILE
-# environment variable.
-#PASSWD_FILE=/etc/passwd
-
-# Path to shadow file which represents user shadowed password information.
-# Default is /etc/shadow. More information about the file format can be read
-# at the manpages for 'shadow'.
-# Can be overriden in debug builds by setting UM_SHADOW_FILE
-# environment variable.
-#SHADOW_FILE=/etc/shadow
-
-# Path to group file which represents group information. Default is /etc/group.
-# More information about the file format can be read at the manpages for
-# 'group'.
-# Can be overriden in debug builds by setting UM_GROUP_FILE
-# environment variable.
-#GROUP_FILE=/etc/group
-
-# Path to group file which represents shadowed group information.
-# Default is /etc/gshadow. More information about the file format can be read
-# at the manpages for 'gshadow'.
-# Can be overriden in debug builds by setting UM_GSHADOW_FILE
-# environment variable.
-#GSHADOW_FILE=/etc/gshadow
-
-# Prefix to be used when creating home directory for the user. For example,
-# with prefix '/home', user 'newu' home directory will be created as
-# '/home/newu'. Default value is '/home'
-# Can be overriden in debug builds by setting UM_HOMEDIR_PREFIX
-# environment variable.
-#HOME_DIR=/home
-
-# Path to user shell executable. Default value is '/bin/bash'
-#SHELL=/bin/bash
-
-# Path to skeleton folder. When new users are created, contents of the skel
-# folder is copied to user home directory. Default value is '/etc/skel'
-# Can be overriden in debug builds by setting UM_SKEL_DIR
-# environment variable.
-#SKEL_DIR=/etc/skel
-
-# Minimum value for the automatic uid selection. Default value is: 2000
-#UID_MIN=2000
-
-# Maximum value for the automatic uid selection. Default value is: 60000
-#UID_MAX=60000
-
-# Minimum value for the automatic uid selection for system user. Default
-# value is: 200
-#SYS_UID_MIN=200
-
-# Maximum value for the automatic uid selection for system user. Default value
-# is: 999
-#SYS_UID_MAX=999
-
-# Minimum value for the automatic gid selection. Default value is: 2000
-#GID_MIN=2000
-
-# Maximum value for the automatic gid selection. Default value is: 60000
-#GID_MAX=60000
-
-# Minimum value for the automatic gid selection for system user. Default value
-# is: 200
-#SYS_GID_MIN=200
-
-# Maximum value for the automatic gid selection for system user. Default value
-# is: 999
-#SYS_GID_MAX=999
-
-# Minimum number of days a password may be used. Default value is: 0
-#PASS_MIN_DAYS=0
-
-# Maximum number of days allowed between password changes. Default value is:
-# 99999
-#PASS_MAX_DAYS=99999
-
-# Number of days warning given before a password expires. Default value is:
-# 7
-#PASS_WARN_AGE=7
-
-# Value used to set the mode of home directories created for new users.
-# Default value is: 022
-#UMASK=022
-
-# Value used to set the encryption algorithm. Default
-# value is: 'SHA512' (other supported options are: 'MD5', 'SHA256', 'DES')
-#ENCRYPT_METHOD=SHA512
-
-#
-# D-Bus related settings.
-#
-[ObjectTimeouts]
-
-# Timeout in seconds for the daemon. Daemon will exit after specified idle time.
-# If not set (or set to 0), the daemon will not exit. Has no effect if P2P DBus
-# is in use.
-DAEMON_TIMEOUT=7
-
-# Timeout in seconds for user dbus objects. If not set (or set to 0), the dbus
-# objects will persist
-#USER_TIMEOUT=5
-
-# Timeout in seconds for group dbus objects. If not set (or set to 0), the dbus
-# objects will persist
-#GROUP_TIMEOUT=5