gdbus: Validate the --dest argument

Passing an nonsense string for the --dest argument can lead
to a segfault of gdbus. Thats not nice, so use our existing
validation function for bus names here.

https://bugzilla.gnome.org/show_bug.cgi?id=747541
This commit is contained in:
Matthias Clasen 2015-04-08 22:07:26 -04:00
parent 3fa0a051a4
commit 21107959ab

View File

@ -203,6 +203,12 @@ print_paths (GDBusConnection *c,
GDBusNodeInfo *node;
guint n;
if (!g_dbus_is_name (name))
{
g_printerr (_("Error: %s is not a valid name\n"), name);
goto out;
}
error = NULL;
result = g_dbus_connection_call_sync (c,
name,
@ -863,6 +869,12 @@ handle_call (gint *argc,
}
}
if (!request_completion && !g_dbus_is_name (opt_call_dest))
{
g_printerr (_("Error: %s is not a valid bus name\n"), opt_call_dest);
goto out;
}
/* validate and complete object path */
if (complete_paths)
{
@ -1601,6 +1613,13 @@ handle_introspect (gint *argc,
print_paths (c, opt_introspect_dest, "/");
goto out;
}
if (!request_completion && !g_dbus_is_name (opt_introspect_dest))
{
g_printerr (_("Error: %s is not a valid bus name\n"), opt_introspect_dest);
goto out;
}
if (opt_introspect_object_path == NULL)
{
if (request_completion)
@ -1824,6 +1843,13 @@ handle_monitor (gint *argc,
goto out;
}
}
if (!request_completion && !g_dbus_is_name (opt_monitor_dest))
{
g_printerr (_("Error: %s is not a valid bus name\n"), opt_monitor_dest);
goto out;
}
if (complete_paths)
{
print_paths (c, opt_monitor_dest, "/");