[glib/glib-2-28] gdbusconnection: Avoid tripping assertion if we fail to authenticate twice
- From: David Zeuthen <davidz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-28] gdbusconnection: Avoid tripping assertion if we fail to authenticate twice
- Date: Thu, 14 Apr 2011 14:27:59 +0000 (UTC)
commit 3ea204ccf704167dcbf1c0ae1ecd690c795ca99c
Author: Colin Walters <walters verbum org>
Date: Wed Apr 13 14:03:58 2011 -0400
gdbusconnection: Avoid tripping assertion if we fail to authenticate twice
If g_bus_get_sync() fails in authentication (because e.g. the process
uid, doesn't match the expected in EXTERNAL), a secondary call to
g_bus_get_sync() would notice we aren't initialized, and try
to initialize.
The assertion here is just wrong; we now explicitly and clearly handle
both cases where we already have an error, or we already succeeded.
https://bugzilla.gnome.org/show_bug.cgi?id=635694
Signed-off-by: David Zeuthen <davidz redhat com>
gio/gdbusconnection.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
index 35c6772..26b430c 100644
--- a/gio/gdbusconnection.c
+++ b/gio/gdbusconnection.c
@@ -2268,15 +2268,20 @@ initable_init (GInitable *initable,
ret = FALSE;
+ /* First, handle the case where the connection already has an
+ * initialization error set.
+ */
+ if (connection->initialization_error != NULL)
+ goto out;
+
+ /* Also make this a no-op if we're already initialized fine */
if (connection->is_initialized)
{
- if (connection->stream != NULL)
- ret = TRUE;
- else
- g_assert (connection->initialization_error != NULL);
+ ret = TRUE;
goto out;
}
- g_assert (connection->initialization_error == NULL);
+
+ g_assert (connection->initialization_error == NULL && !connection->is_initialized);
/* The user can pass multiple (but mutally exclusive) construct
* properties:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]