mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-04 02:40:19 +01:00
dbus-send: check usage a bit strictly
This commit does several more strictly check for dbus-send as its usage suggested. * now --address is an invalid option but --address=, this just like the others, say --reply-timeout=, --dest=, --type= * --print-reply= only take an optional argument "=literal" * --print-reply= will cause error with missing MSEC and invalid MSEC will cause invalid value error * --dest= will cause error with missing a NAME and also call dbus_validate_bus_name to verify the NAME Signed-off-by: Chengwei Yang <chengwei.yang@intel.com> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=65424 Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
This commit is contained in:
parent
c9b942e56f
commit
c690ee4351
1 changed files with 34 additions and 10 deletions
|
|
@ -266,34 +266,52 @@ main (int argc, char *argv[])
|
|||
type = DBUS_BUS_SESSION;
|
||||
session_or_system = TRUE;
|
||||
}
|
||||
else if (strstr (arg, "--address") == arg)
|
||||
else if (strstr (arg, "--address=") == arg)
|
||||
{
|
||||
address = strchr (arg, '=');
|
||||
|
||||
if (address == NULL)
|
||||
if (*(strchr (arg, '=') + 1) == '\0')
|
||||
{
|
||||
fprintf (stderr, "\"--address=\" requires an ADDRESS\n");
|
||||
usage (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
address = address + 1;
|
||||
}
|
||||
address = strchr (arg, '=') + 1;
|
||||
}
|
||||
else if (strncmp (arg, "--print-reply", 13) == 0)
|
||||
{
|
||||
print_reply = TRUE;
|
||||
message_type = DBUS_MESSAGE_TYPE_METHOD_CALL;
|
||||
if (*(arg + 13) != '\0')
|
||||
if (strcmp (arg + 13, "=literal") == 0)
|
||||
print_reply_literal = TRUE;
|
||||
else if (*(arg + 13) != '\0')
|
||||
{
|
||||
fprintf (stderr, "invalid value (%s) of \"--print-reply\"\n", arg + 13);
|
||||
usage (1);
|
||||
}
|
||||
}
|
||||
else if (strstr (arg, "--reply-timeout=") == arg)
|
||||
{
|
||||
if (*(strchr (arg, '=') + 1) == '\0')
|
||||
{
|
||||
fprintf (stderr, "\"--reply-timeout=\" requires an MSEC\n");
|
||||
usage (1);
|
||||
}
|
||||
reply_timeout = strtol (strchr (arg, '=') + 1,
|
||||
NULL, 10);
|
||||
if (reply_timeout <= 0)
|
||||
{
|
||||
fprintf (stderr, "invalid value (%s) of \"--reply-timeout\"\n",
|
||||
strchr (arg, '=') + 1);
|
||||
usage (1);
|
||||
}
|
||||
}
|
||||
else if (strstr (arg, "--dest=") == arg)
|
||||
dest = strchr (arg, '=') + 1;
|
||||
{
|
||||
if (*(strchr (arg, '=') + 1) == '\0')
|
||||
{
|
||||
fprintf (stderr, "\"--dest=\" requires an NAME\n");
|
||||
usage (1);
|
||||
}
|
||||
dest = strchr (arg, '=') + 1;
|
||||
}
|
||||
else if (strstr (arg, "--type=") == arg)
|
||||
type_str = strchr (arg, '=') + 1;
|
||||
else if (!strcmp(arg, "--help"))
|
||||
|
|
@ -330,6 +348,12 @@ main (int argc, char *argv[])
|
|||
|
||||
dbus_error_init (&error);
|
||||
|
||||
if (!dbus_validate_bus_name (dest, &error))
|
||||
{
|
||||
fprintf (stderr, "invalid value (%s) of \"--dest\"\n", dest);
|
||||
usage (1);
|
||||
}
|
||||
|
||||
if (address != NULL)
|
||||
{
|
||||
connection = dbus_connection_open (address, &error);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue