summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Walter <stefw@src.gnome.org>2008-07-21 21:37:45 +0000
committerStefan Walter <stefw@src.gnome.org>2008-07-21 21:37:45 +0000
commit15b0e9cb06daf0f2c7d32341900341da6e4c9250 (patch)
tree5f10206876b6dfefb3ef0c905c050dcbbb261062
parentd627fa4b6332fe18e35fc3cbd061264fb3133420 (diff)
downloadgnome-keyring-15b0e9cb06daf0f2c7d32341900341da6e4c9250.tar.gz
Fix crash in libhal_ctx_shutdown. Fixes bug #544007
* common/gkr-location.c: Fix crash in libhal_ctx_shutdown. Fixes bug #544007 svn path=/trunk/; revision=1191
-rw-r--r--ChangeLog3
-rw-r--r--common/gkr-location.c13
2 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 652d77a3..62fed897 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
* pkcs11/gkr-pkcs11-module.c: Build fix. Fixes bug #543221
+ * common/gkr-location.c: Fix crash in libhal_ctx_shutdown.
+ Fixes bug #544007
+
2008-07-20 Stef Walter <stef@memberwebs.com>
* daemon/gkr-daemon.c:
diff --git a/common/gkr-location.c b/common/gkr-location.c
index 5fe7e657..756b814d 100644
--- a/common/gkr-location.c
+++ b/common/gkr-location.c
@@ -70,6 +70,7 @@ typedef struct _GkrLocationManagerPrivate GkrLocationManagerPrivate;
struct _GkrLocationManagerPrivate {
#ifdef WITH_HAL
LibHalContext *hal_ctx;
+ gboolean hal_inited;
guint hal_retry;
DBusConnection *dbus_connection;
#endif
@@ -399,9 +400,14 @@ location_manager_hal_uninit (GkrLocationManager *locmgr)
if (pv->hal_ctx) {
dbus_error_init (&error);
- if (pv->dbus_connection != NULL && !libhal_ctx_shutdown (pv->hal_ctx, &error)) {
- g_warning ("failed to shutdown HAL context: %s\n", error.message);
- dbus_error_free (&error);
+ if (pv->dbus_connection != NULL) {
+ if (pv->hal_inited) {
+ if (libhal_ctx_shutdown (pv->hal_ctx, &error)) {
+ g_warning ("failed to shutdown HAL context: %s\n", error.message);
+ dbus_error_free (&error);
+ }
+ pv->hal_inited = FALSE;
+ }
}
if (!libhal_ctx_free (pv->hal_ctx))
@@ -493,6 +499,7 @@ location_manager_hal_init (GkrLocationManager *locmgr)
goto failed;
}
+ pv->hal_inited = TRUE;
libhal_ctx_set_user_data (pv->hal_ctx, locmgr);
populate_all_volumes (locmgr);