From: Simon McVittie Date: Mon, 25 Sep 2017 12:37:56 +0000 (+0100) Subject: config-parser: Fail on impossible send_broadcast/send_destination pair X-Git-Tag: dbus-1.12.0~49 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bbbc6023180b58b4ebe0c09afd8df8cf950cdb3b;p=platform%2Fupstream%2Fdbus.git config-parser: Fail on impossible send_broadcast/send_destination pair If we add a rule like 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 Bug: https://bugs.freedesktop.org/92853 Reviewed-by: Philip Withnall --- diff --git a/bus/config-parser.c b/bus/config-parser.c index 7f095bd..be27d38 100644 --- a/bus/config-parser.c +++ b/bus/config-parser.c @@ -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))