diff options
author | Pavel Březina <pbrezina@redhat.com> | 2014-06-30 11:23:21 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-01 11:49:29 +0200 |
commit | a2ac7f081721cae6a6c4671fee3dfd9fe7d7da48 (patch) | |
tree | d762aec4df1f50795fbc0ac7b90a020315a76b65 /src/sbus | |
parent | 6815772cb5c1c65de6c93090f4fd191ee02527f1 (diff) | |
download | sssd-a2ac7f081721cae6a6c4671fee3dfd9fe7d7da48.tar.gz sssd-a2ac7f081721cae6a6c4671fee3dfd9fe7d7da48.tar.xz sssd-a2ac7f081721cae6a6c4671fee3dfd9fe7d7da48.zip |
sbus_request: fix potential NULL dereference
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/sbus')
-rw-r--r-- | src/sbus/sssd_dbus_properties.c | 4 | ||||
-rw-r--r-- | 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 703f6eb81..c6bdffda7 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 2852f87d8..7729d4e0d 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"); |