mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-04 20:10:19 +01:00
dbus-send: Validate interface, member names before use
Instead of a failed check or assertion failure and a core dump, let's
produce an error message on stderr and a graceful nonzero exit status.
It's still not going to *work*, but at least we can avoid crashing.
$ dbus-send / com.example.Nope..Nope
Interface name was not valid: 'com.example.Nope.'
$ dbus-send / com.example.Nope.0
Invalid signal name: Member name was not valid: '0'
Resolves: dbus#338
Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
dde5c8fdc4
commit
a42a07a1fb
1 changed files with 32 additions and 2 deletions
|
|
@ -488,7 +488,23 @@ main (int argc, char *argv[])
|
|||
exit (1);
|
||||
}
|
||||
*last_dot = '\0';
|
||||
|
||||
|
||||
if (!dbus_validate_interface (name, &error))
|
||||
{
|
||||
/* Typically this is "Interface name was not valid: \"xxx\""
|
||||
* so we don't need to prefix anything special */
|
||||
fprintf (stderr, "%s\n", error.message);
|
||||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (!dbus_validate_member (last_dot + 1, &error))
|
||||
{
|
||||
fprintf (stderr, "Invalid method name: %s\n", error.message);
|
||||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
message = dbus_message_new_method_call (NULL,
|
||||
path,
|
||||
name,
|
||||
|
|
@ -508,7 +524,21 @@ main (int argc, char *argv[])
|
|||
exit (1);
|
||||
}
|
||||
*last_dot = '\0';
|
||||
|
||||
|
||||
if (!dbus_validate_interface (name, &error))
|
||||
{
|
||||
fprintf (stderr, "%s\n", error.message);
|
||||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (!dbus_validate_member (last_dot + 1, &error))
|
||||
{
|
||||
fprintf (stderr, "Invalid signal name: %s\n", error.message);
|
||||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
message = dbus_message_new_signal (path, name, last_dot + 1);
|
||||
handle_oom (message != NULL);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue