X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fdbus-common.c;h=bcbef77b53411d2739874145b275d38470f62c56;hb=b5b46d599524341ddd7407e5dff1021af8ff5089;hp=7f0dce5ad393eda0b6292f3e3d793390ffa09a26;hpb=9ed63f16131637fc0e76bd40b5452cfc45bccfc7;p=elogind.git diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c index 7f0dce5ad..bcbef77b5 100644 --- a/src/shared/dbus-common.c +++ b/src/shared/dbus-common.c @@ -121,7 +121,7 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, bool *_private, DBusError * try via XDG_RUNTIME_DIR first, then * fallback to normal bus access */ - e = getenv("XDG_RUNTIME_DIR"); + e = __secure_getenv("XDG_RUNTIME_DIR"); if (e) { char *p; @@ -1278,16 +1278,15 @@ int bus_method_call_with_reply(DBusConnection *bus, va_start(ap, first_arg_type); if (!dbus_message_append_args_valist(m, first_arg_type, ap)) { va_end(ap); - dbus_message_unref(m); r = log_oom(); goto finish; } va_end(ap); reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); - dbus_message_unref(m); if (!reply) { - log_error("Failed to issue method call: %s", bus_error_message(&error)); + if (!return_error) + log_error("Failed to issue method call: %s", bus_error_message(&error)); if (bus_error_is_no_service(&error)) r = -ENOENT; else if (dbus_error_has_name(&error, DBUS_ERROR_ACCESS_DENIED)) @@ -1298,13 +1297,18 @@ int bus_method_call_with_reply(DBusConnection *bus, r = -EIO; goto finish; } + if (return_reply) *return_reply = reply; else dbus_message_unref(reply); + finish: - if(return_error) - *return_error=error; + if (m) + dbus_message_unref(m); + + if (return_error) + *return_error = error; else dbus_error_free(&error);