mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-02-04 14:10:28 +01:00
config-parser: Fail on impossible send_broadcast/send_destination pair
If we add a rule like
<allow send_destination="com.example" send_broadcast="true"/>
then it cannot possibly match anything, because to be a broadcast, the
message would have to have no destination. The only value of
send_destination that can be combined with send_broadcast="true" is
the wildcard "*", but by this point in the function we already
replaced "*" with NULL.
Adapted from an earlier implementation of send_broadcast by
Alban Crequy.
Signed-off-by: Simon McVittie <smcv@collabora.com>
Bug: https://bugs.freedesktop.org/92853
Reviewed-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
parent
8f9022e8dc
commit
bbbc602318
1 changed files with 13 additions and 0 deletions
|
|
@ -1554,6 +1554,19 @@ append_rule_from_element (BusConfigParser *parser,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (send_destination != NULL &&
|
||||
send_broadcast != NULL &&
|
||||
strcmp (send_broadcast, "true") == 0)
|
||||
{
|
||||
/* Broadcast messages have no destination, so this cannot
|
||||
* possibly match */
|
||||
dbus_set_error (error, DBUS_ERROR_FAILED,
|
||||
"Rule with send_broadcast=\"true\" and "
|
||||
"send_destination=\"%s\" cannot match anything",
|
||||
send_destination);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (send_requested_reply &&
|
||||
!(strcmp (send_requested_reply, "true") == 0 ||
|
||||
strcmp (send_requested_reply, "false") == 0))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue