}
if (mask & SD_BUS_CREDS_SELINUX_CONTEXT) {
- const void *p;
- size_t sz;
+ const void *p = NULL;
+ size_t sz = 0;
r = sd_bus_call_method(
bus,
struct kdbus_cmd_match *m;
struct kdbus_item *item;
- uint64_t bloom[BLOOM_SIZE/8];
+ uint64_t *bloom;
size_t sz;
const char *sender = NULL;
size_t sender_length = 0;
assert(bus);
- zero(bloom);
+ bloom = alloca0(bus->bloom_size);
sz = ALIGN8(offsetof(struct kdbus_cmd_match, items));
if (c->value_u8 != SD_BUS_MESSAGE_SIGNAL)
matches_name_change = false;
- bloom_add_pair(bloom, "message-type", bus_message_type_to_string(c->value_u8));
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "message-type", bus_message_type_to_string(c->value_u8));
using_bloom = true;
break;
if (!streq(c->value_str, "org.freedesktop.DBus"))
matches_name_change = false;
- bloom_add_pair(bloom, "interface", c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "interface", c->value_str);
using_bloom = true;
break;
if (!streq(c->value_str, "NameOwnerChanged"))
matches_name_change = false;
- bloom_add_pair(bloom, "member", c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "member", c->value_str);
using_bloom = true;
break;
if (!streq(c->value_str, "/org/freedesktop/DBus"))
matches_name_change = false;
- bloom_add_pair(bloom, "path", c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "path", c->value_str);
using_bloom = true;
break;
case BUS_MATCH_PATH_NAMESPACE:
if (!streq(c->value_str, "/")) {
- bloom_add_pair(bloom, "path-slash-prefix", c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "path-slash-prefix", c->value_str);
using_bloom = true;
}
break;
name_change_arg[c->type - BUS_MATCH_ARG] = c->value_str;
snprintf(buf, sizeof(buf), "arg%u", c->type - BUS_MATCH_ARG);
- bloom_add_pair(bloom, buf, c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, buf, c->value_str);
using_bloom = true;
break;
}
char buf[sizeof("arg")-1 + 2 + sizeof("-slash-prefix")];
snprintf(buf, sizeof(buf), "arg%u-slash-prefix", c->type - BUS_MATCH_ARG_PATH);
- bloom_add_pair(bloom, buf, c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, buf, c->value_str);
using_bloom = true;
break;
}
char buf[sizeof("arg")-1 + 2 + sizeof("-dot-prefix")];
snprintf(buf, sizeof(buf), "arg%u-dot-prefix", c->type - BUS_MATCH_ARG_NAMESPACE);
- bloom_add_pair(bloom, buf, c->value_str);
+ bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, buf, c->value_str);
using_bloom = true;
break;
}
}
if (using_bloom)
- sz += ALIGN8(offsetof(struct kdbus_item, data64) + BLOOM_SIZE);
+ sz += ALIGN8(offsetof(struct kdbus_item, data64) + bus->bloom_size);
m = alloca0(sz);
m->size = sz;
}
if (using_bloom) {
- item->size = offsetof(struct kdbus_item, data64) + BLOOM_SIZE;
+ item->size = offsetof(struct kdbus_item, data64) + bus->bloom_size;
item->type = KDBUS_ITEM_BLOOM_MASK;
- memcpy(item->data64, bloom, BLOOM_SIZE);
+ memcpy(item->data64, bloom, bus->bloom_size);
item = KDBUS_ITEM_NEXT(item);
}
r = sd_bus_message_new_method_call(
bus,
+ &m,
name,
"/",
"org.freedesktop.DBus.Peer",
- "GetMachineId", &m);
+ "GetMachineId");
if (r < 0)
return r;