bus: make sure we can match well-known names
This commit is contained in:
parent
0fc6e1ed00
commit
ae7bed3f2d
|
@ -60,7 +60,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline bool BUS_MATCH_IS_COMPARE(enum bus_match_node_type t) {
|
static inline bool BUS_MATCH_IS_COMPARE(enum bus_match_node_type t) {
|
||||||
return t >= BUS_MATCH_MESSAGE_TYPE && t <= BUS_MATCH_ARG_NAMESPACE_LAST;
|
return t >= BUS_MATCH_SENDER && t <= BUS_MATCH_ARG_NAMESPACE_LAST;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool BUS_MATCH_CAN_HASH(enum bus_match_node_type t) {
|
static inline bool BUS_MATCH_CAN_HASH(enum bus_match_node_type t) {
|
||||||
|
@ -142,6 +142,22 @@ static bool value_node_test(
|
||||||
|
|
||||||
case BUS_MATCH_SENDER:
|
case BUS_MATCH_SENDER:
|
||||||
case BUS_MATCH_DESTINATION:
|
case BUS_MATCH_DESTINATION:
|
||||||
|
if (streq_ptr(node->value.str, value_str))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
/* FIXME: So here's an ugliness: if the match is for a
|
||||||
|
* well-known name then we cannot actually check this
|
||||||
|
* correctly here. This doesn't matter much for dbus1
|
||||||
|
* where no false positives exist, hence we just
|
||||||
|
* ignore this case here. For kdbus the messages
|
||||||
|
* should contain all well-known names of the sender,
|
||||||
|
* hence we can fix things there correctly. */
|
||||||
|
|
||||||
|
if (node->value.str[0] != ':' && value_str[0] == ':')
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
case BUS_MATCH_INTERFACE:
|
case BUS_MATCH_INTERFACE:
|
||||||
case BUS_MATCH_MEMBER:
|
case BUS_MATCH_MEMBER:
|
||||||
case BUS_MATCH_PATH:
|
case BUS_MATCH_PATH:
|
||||||
|
|
|
@ -31,8 +31,8 @@ enum bus_match_node_type {
|
||||||
BUS_MATCH_LEAF,
|
BUS_MATCH_LEAF,
|
||||||
|
|
||||||
/* The following are all different kinds of compare nodes */
|
/* The following are all different kinds of compare nodes */
|
||||||
BUS_MATCH_MESSAGE_TYPE,
|
|
||||||
BUS_MATCH_SENDER,
|
BUS_MATCH_SENDER,
|
||||||
|
BUS_MATCH_MESSAGE_TYPE,
|
||||||
BUS_MATCH_DESTINATION,
|
BUS_MATCH_DESTINATION,
|
||||||
BUS_MATCH_INTERFACE,
|
BUS_MATCH_INTERFACE,
|
||||||
BUS_MATCH_MEMBER,
|
BUS_MATCH_MEMBER,
|
||||||
|
|
Loading…
Reference in a new issue