From a2ac7f081721cae6a6c4671fee3dfd9fe7d7da48 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Mon, 30 Jun 2014 11:23:21 +0200 Subject: sbus_request: fix potential NULL dereference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Lukáš Slebodník --- src/sbus/sssd_dbus_properties.c | 4 +--- src/sbus/sssd_dbus_request.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/sbus/sssd_dbus_properties.c b/src/sbus/sssd_dbus_properties.c index 703f6eb8..c6bdffda 100644 --- a/src/sbus/sssd_dbus_properties.c +++ b/src/sbus/sssd_dbus_properties.c @@ -358,9 +358,7 @@ dispatch_properties_get_all(struct sbus_connection *conn, "No such interface")); } - sbus_request_invoke_or_finish(req, NULL, - intf->instance_data, - meta->invoker_get_all); + sbus_request_invoke_or_finish(req, NULL, NULL, meta->invoker_get_all); return EOK; } diff --git a/src/sbus/sssd_dbus_request.c b/src/sbus/sssd_dbus_request.c index 2852f87d..7729d4e0 100644 --- a/src/sbus/sssd_dbus_request.c +++ b/src/sbus/sssd_dbus_request.c @@ -63,10 +63,12 @@ sbus_request_invoke_or_finish(struct sbus_request *dbus_req, DBusError error; int ret; - if (invoker_fn) { + if (invoker_fn != NULL) { ret = invoker_fn(dbus_req, handler_fn); - } else { + } else if (handler_fn != NULL) { ret = handler_fn(dbus_req, handler_data); + } else { + ret = EINVAL; } switch(ret) { @@ -313,6 +315,11 @@ int sbus_request_fail_and_finish(struct sbus_request *dbus_req, DBusMessage *reply; int ret; + if (error == NULL) { + sbus_request_finish(dbus_req, NULL); + return ENOMEM; + } + reply = dbus_message_new_error(dbus_req->message, error->name, error->message); if (!reply) { DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory allocating DBus message\n"); -- cgit