summaryrefslogtreecommitdiffstats
path: root/src/sbus
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2014-06-30 11:23:21 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-07-01 11:49:29 +0200
commita2ac7f081721cae6a6c4671fee3dfd9fe7d7da48 (patch)
treed762aec4df1f50795fbc0ac7b90a020315a76b65 /src/sbus
parent6815772cb5c1c65de6c93090f4fd191ee02527f1 (diff)
downloadsssd-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.c4
-rw-r--r--src/sbus/sssd_dbus_request.c11
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");