>From b3f7501ddc9f9ddde1ee0537a60724e401368c53 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 30 Mar 2012 21:15:30 +0200 Subject: [PATCH] Catch cases where D-Bus connection is NULL https://fedorahosted.org/sssd/ticket/1270 --- src/providers/data_provider_be.c | 20 ++++++++++++++++++++ src/sbus/sssd_dbus_connection.c | 4 ++++ 2 files changed, 24 insertions(+), 0 deletions(-) diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c index 2bc1930ca03cb7eeebabae5267468dd1db548133..473d83aca9d389a5f904d4a06f072e7fb0b3224f 100644 --- a/src/providers/data_provider_be.c +++ b/src/providers/data_provider_be.c @@ -349,6 +349,11 @@ static void acctinfo_callback(struct be_req *req, } dbus_conn = sbus_get_connection(req->becli->conn); + if (!dbus_conn) { + DEBUG(SSSDBG_CRIT_FAILURE, ("D-BUS not connected\n")); + return; + } + dbus_connection_send(dbus_conn, reply, NULL); dbus_message_unref(reply); @@ -592,6 +597,11 @@ static void be_pam_handler_callback(struct be_req *req, } dbus_conn = sbus_get_connection(req->becli->conn); + if (!dbus_conn) { + DEBUG(SSSDBG_CRIT_FAILURE, ("D-BUS not connected\n")); + return; + } + dbus_connection_send(dbus_conn, reply, NULL); dbus_message_unref(reply); @@ -751,6 +761,11 @@ static void be_sudo_handler_reply(struct sbus_connection *conn, dp_err, dp_ret, errstr ? errstr : "")); dbus_conn = sbus_get_connection(conn); + if (!dbus_conn) { + DEBUG(SSSDBG_CRIT_FAILURE, ("D-BUS not connected\n")); + return; + } + dbus_connection_send(dbus_conn, reply, NULL); dbus_message_unref(reply); } @@ -1139,6 +1154,11 @@ static void be_autofs_handler_callback(struct be_req *req, } dbus_conn = sbus_get_connection(req->becli->conn); + if (!dbus_conn) { + DEBUG(SSSDBG_CRIT_FAILURE, ("D-BUS not connected\n")); + return; + } + dbus_connection_send(dbus_conn, reply, NULL); dbus_message_unref(reply); diff --git a/src/sbus/sssd_dbus_connection.c b/src/sbus/sssd_dbus_connection.c index 9faf3d9f7535999263a1ea1368808bbcaffb3c1a..9077b81c13b826326c616402e9ecfe0f924012de 100644 --- a/src/sbus/sssd_dbus_connection.c +++ b/src/sbus/sssd_dbus_connection.c @@ -707,6 +707,10 @@ int sbus_conn_send(struct sbus_connection *conn, dbus_bool_t dbret; dbus_conn = sbus_get_connection(conn); + if (!dbus_conn) { + DEBUG(SSSDBG_CRIT_FAILURE, ("D-BUS not connected\n")); + return ENOTCONN; + } dbret = dbus_connection_send_with_reply(dbus_conn, msg, &pending_reply, -- 1.7.7.6