AC_SUBST(GUDEV_CFLAGS)
AC_SUBST(GUDEV_LIBS)
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.31.0])
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.31.13])
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
-PKG_CHECK_MODULES(GIO, [gio-unix-2.0 >= 2.31.0])
+PKG_CHECK_MODULES(GIO, [gio-unix-2.0 >= 2.31.13])
AC_SUBST(GIO_CFLAGS)
AC_SUBST(GIO_LIBS)
udisks_daemon_util_check_authorization_sync
udisks_daemon_util_get_caller_uid_sync
udisks_daemon_util_setup_by_user
+udisks_daemon_util_dup_object
</SECTION>
<SECTION>
}
/* ---------------------------------------------------------------------------------------------------- */
+
+/**
+ * udisks_daemon_util_dup_object:
+ * @interface_: (type GDBusInterface): A #GDBusInterface<!-- -->-derived instance.
+ * @error: %NULL, or an unset #GError to set if the return value is %NULL.
+ *
+ * Gets the enclosing #UDisksObject for @interface, if any.
+ *
+ * Returns: (transfer full) (type UDisksObject): Either %NULL or a
+ * #UDisksObject<!-- -->-derived instance that must be released with
+ * g_object_unref().
+ */
+gpointer
+udisks_daemon_util_dup_object (gpointer interface_,
+ GError **error)
+{
+ gpointer ret;
+
+ g_return_val_if_fail (G_IS_DBUS_INTERFACE (interface_), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ ret = g_dbus_interface_dup_object (interface_);
+ if (ret == NULL)
+ {
+ g_set_error (error,
+ UDISKS_ERROR,
+ UDISKS_ERROR_FAILED,
+ "No enclosing object for interface");
+ }
+
+ return ret;
+}
gchar **out_user_name,
GError **error);
+gpointer udisks_daemon_util_dup_object (gpointer interface_,
+ GError **error);
+
G_END_DECLS
#endif /* __UDISKS_DAEMON_UTIL_H__ */
GVariant *configuration;
GError *error;
- object = UDISKS_LINUX_BLOCK_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (object);
error = NULL;
configuration); /* consumes floating ref */
out:
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
GVariant *details;
GError *error;
- object = UDISKS_LINUX_BLOCK_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (object);
g_variant_get (item, "(&s@a{sv})", &type, &details);
out:
g_variant_unref (details);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
GVariant *details;
GError *error;
- object = UDISKS_LINUX_BLOCK_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (object);
g_variant_get (item, "(&s@a{sv})", &type, &details);
out:
g_variant_unref (details);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
GVariant *new_details;
GError *error;
- object = UDISKS_LINUX_BLOCK_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (object);
g_variant_get (old_item, "(&s@a{sv})", &old_type, &old_details);
out:
g_variant_unref (new_details);
g_variant_unref (old_details);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
gchar *encrypt_passphrase = NULL;
gchar *mapped_name = NULL;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
escaped_label = g_shell_quote("");
g_clear_object (&cleartext_block);
g_clear_object (&udev_cleartext_device);
g_free (wait_data);
+ g_clear_object (&object);
return TRUE; /* returning true means that we handled the method invocation */
}
const gchar *action_id;
const gchar *device;
GUnixFDList *out_fd_list = NULL;
+ GError *error;
gint fd;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
action_id = "org.freedesktop.udisks2.open-device";
out:
g_clear_object (&out_fd_list);
+ g_clear_object (&object);
return TRUE; /* returning true means that we handled the method invocation */
}
const gchar *action_id;
const gchar *device;
GUnixFDList *out_fd_list = NULL;
+ GError *error;
gint fd;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (block)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (block, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
action_id = "org.freedesktop.udisks2.open-device";
out:
g_clear_object (&out_fd_list);
+ g_clear_object (&object);
return TRUE; /* returning true means that we handled the method invocation */
}
UDisksDaemon *daemon;
const gchar *action_id;
gchar *error_message;
+ GError *error;
daemon = NULL;
block = NULL;
error_message = NULL;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (drive, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_drive_object_get_daemon (object);
block_object = udisks_linux_drive_object_get_block (object, TRUE);
if (block_object == NULL)
if (block_object != NULL)
g_object_unref (block_object);
g_free (error_message);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
GCancellable *cancellable,
GError **error)
{
- UDisksLinuxDriveObject *object;
+ UDisksLinuxDriveObject *object;
GUdevDevice *device;
gboolean ret;
- SkDisk *d;
+ SkDisk *d = NULL;
SkBool awake;
SkBool good;
uint64_t temp_mkelvin = 0;
const SkSmartParsedData *data;
ParseData parse_data;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ object = udisks_daemon_util_dup_object (drive, error);
+ if (object == NULL)
+ goto out;
+
device = udisks_linux_drive_object_get_device (object, TRUE /* get_hw */);
g_assert (device != NULL);
g_object_unref (device);
if (d != NULL)
sk_disk_free (d);
+ g_clear_object (&object);
return ret;
}
gboolean ret = FALSE;
SkSmartSelfTest test;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ object = udisks_daemon_util_dup_object (drive, error);
+ if (object == NULL)
+ goto out;
+
device = udisks_linux_drive_object_get_device (object, TRUE /* get_hw */);
g_assert (device != NULL);
g_object_unref (device);
if (d != NULL)
sk_disk_free (d);
+ g_clear_object (&object);
return ret;
}
daemon = NULL;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (drive, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_drive_object_get_daemon (object);
block_object = udisks_linux_drive_object_get_block (object, TRUE);
if (block_object == NULL)
out:
if (block_object != NULL)
g_object_unref (block_object);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksLinuxDriveAta *drive = UDISKS_LINUX_DRIVE_ATA (_drive);
GError *error;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (drive, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_drive_object_get_daemon (object);
block_object = udisks_linux_drive_object_get_block (object, TRUE);
if (block_object == NULL)
udisks_drive_ata_complete_smart_selftest_abort (UDISKS_DRIVE_ATA (drive), invocation);
out:
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksLinuxDriveObject *object;
gboolean ret = FALSE;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ object = udisks_daemon_util_dup_object (drive, error);
+ if (object == NULL)
+ goto out;
while (TRUE)
{
if (drive->selftest_cancellable != NULL)
g_object_unref (drive->selftest_cancellable);
G_UNLOCK (object_lock);
+ g_clear_object (&object);
return ret;
}
UDisksLinuxDriveAta *drive = UDISKS_LINUX_DRIVE_ATA (_drive);
GError *error;
- object = UDISKS_LINUX_DRIVE_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (drive)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (drive, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_drive_object_get_daemon (object);
block_object = udisks_linux_drive_object_get_block (object, TRUE);
if (block_object == NULL)
udisks_drive_ata_complete_smart_selftest_start (UDISKS_DRIVE_ATA (drive), invocation);
out:
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
udev_cleartext_device = NULL;
cleartext_object = NULL;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (encrypted)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (encrypted, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
g_object_unref (udev_cleartext_device);
if (cleartext_object != NULL)
g_object_unref (cleartext_object);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
cleartext_object = NULL;
device = NULL;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (encrypted)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (encrypted, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
g_free (error_message);
if (cleartext_object != NULL)
g_object_unref (cleartext_object);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
gchar *passphrases = NULL;
GError *error;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (encrypted)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (encrypted, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
out:
g_free (passphrases);
g_free (error_message);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
caller_user_name = NULL;
system_managed = FALSE;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (filesystem)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (filesystem, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
g_free (mount_point_to_use);
g_free (fstab_mount_options);
g_free (caller_user_name);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
error_message = NULL;
opt_force = FALSE;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (filesystem)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (filesystem, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
g_free (escaped_mount_point);
g_free (mount_point);
g_free (fstab_mount_options);
+ g_clear_object (&object);
return TRUE;
}
const gchar *action_id;
gchar *command;
gchar *tmp;
+ GError *error;
object = NULL;
daemon = NULL;
escaped_label = NULL;
command = NULL;
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (filesystem)));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (filesystem, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_peek_block (object);
out:
g_free (escaped_label);
g_free (command);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
error_message = NULL;
escaped_device = NULL;
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (loop))));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (loop, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
block = udisks_object_peek_block (object);
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
cleanup = udisks_daemon_get_cleanup (daemon);
g_free (escaped_device);
g_free (error_message);
g_object_unref (object);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksBlock *partition_table_block = NULL;
gchar *command_line = NULL;
gint fd = -1;
+ GError *error;
+
+ error = NULL;
+ object = udisks_daemon_util_dup_object (partition, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (partition))));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_get_block (object);
g_clear_object (&partition_table_object);
g_clear_object (&partition_table);
g_clear_object (&partition_table_block);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksBlock *partition_table_block = NULL;
gchar *command_line = NULL;
gint fd = -1;
+ GError *error;
+
+ error = NULL;
+ object = udisks_daemon_util_dup_object (partition, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (partition))));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_get_block (object);
g_clear_object (&partition_table_object);
g_clear_object (&partition_table);
g_clear_object (&partition_table_block);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksBlock *partition_table_block = NULL;
gchar *command_line = NULL;
gint fd = -1;
+ GError *error;
+
+ error = NULL;
+ object = udisks_daemon_util_dup_object (partition, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (partition))));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_get_block (object);
g_clear_object (&partition_table_object);
g_clear_object (&partition_table);
g_clear_object (&partition_table_block);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
UDisksPartitionTable *partition_table = NULL;
UDisksBlock *partition_table_block = NULL;
gchar *command_line = NULL;
+ GError *error;
+
+ error = NULL;
+ object = udisks_daemon_util_dup_object (partition, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (partition))));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_get_block (object);
g_clear_object (&partition_table_object);
g_clear_object (&partition_table);
g_clear_object (&partition_table_block);
+ g_clear_object (&object);
return TRUE; /* returning TRUE means that we handled the method invocation */
}
static gboolean
have_partition_in_range (UDisksPartitionTable *table,
+ UDisksObject *object,
guint64 start,
guint64 end,
gboolean ignore_container)
{
gboolean ret = FALSE;
- UDisksObject *object = NULL;
UDisksDaemon *daemon = NULL;
GDBusObjectManager *object_manager = NULL;
const gchar *table_object_path;
GList *objects = NULL, *l;
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (table))));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
object_manager = G_DBUS_OBJECT_MANAGER (udisks_daemon_get_object_manager (daemon));
out:
g_list_foreach (objects, (GFunc) g_object_unref, NULL);
g_list_free (objects);
- g_clear_object (&object);
return ret;
}
const gchar *table_type;
GError *error;
- object = g_object_ref (UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (table))));
+ error = NULL;
+ object = udisks_daemon_util_dup_object (table, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
+
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_get_block (object);
if (block == NULL)
(type_as_int == 0x05 || type_as_int == 0x0f || type_as_int == 0x85))
{
part_type = "extended";
- if (have_partition_in_range (table, offset, offset + size, FALSE))
+ if (have_partition_in_range (table, object, offset, offset + size, FALSE))
{
g_dbus_method_invocation_return_error (invocation, UDISKS_ERROR, UDISKS_ERROR_FAILED,
"Requested range is already occupied by a partition");
}
else
{
- if (have_partition_in_range (table, offset, offset + size, FALSE))
+ if (have_partition_in_range (table, object, offset, offset + size, FALSE))
{
- if (have_partition_in_range (table, offset, offset + size, TRUE))
+ if (have_partition_in_range (table, object, offset, offset + size, TRUE))
{
g_dbus_method_invocation_return_error (invocation, UDISKS_ERROR, UDISKS_ERROR_FAILED,
"Requested range is already occupied by a partition");
* - exceeding the end of the disk
*/
while (end_bytes > start_mib * MIB_SIZE && (have_partition_in_range (table,
+ object,
start_mib * MIB_SIZE,
end_bytes, is_logical) ||
end_bytes > udisks_block_get_size (block)))
gchar *escaped_escaped_name;
/* GPT is easy, no extended/logical crap */
- if (have_partition_in_range (table, offset, offset + size, FALSE))
+ if (have_partition_in_range (table, object, offset, offset + size, FALSE))
{
g_dbus_method_invocation_return_error (invocation, UDISKS_ERROR, UDISKS_ERROR_FAILED,
"Requested range is already occupied by a partition");
* - exceeding the end of the disk (note: the 33 LBAs is the Secondary GPT)
*/
while (end_bytes > start_mib * MIB_SIZE && (have_partition_in_range (table,
+ object,
start_mib * MIB_SIZE,
end_bytes, FALSE) ||
(end_bytes > udisks_block_get_size (block) - 33*512)))
UDisksDaemon *daemon;
UDisksBlock *block;
UDisksBaseJob *job;
+ GError *error;
+
+ error = NULL;
+ object = udisks_daemon_util_dup_object (swapspace, &error);
+ if (object == NULL)
+ {
+ g_dbus_method_invocation_take_error (invocation, error);
+ goto out;
+ }
- object = UDISKS_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (swapspace)));
daemon = udisks_linux_block_object_get_daemon (UDISKS_LINUX_BLOCK_OBJECT (object));
block = udisks_object_peek_block (object);
invocation);
out:
+ g_clear_object (&object);
return TRUE;
}