diff options
Diffstat (limited to 'src/libsystemd-bus')
-rw-r--r-- | src/libsystemd-bus/bus-introspect.c | 3 | ||||
-rw-r--r-- | src/libsystemd-bus/bus-objects.c | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/libsystemd-bus/bus-introspect.c b/src/libsystemd-bus/bus-introspect.c index 8bec017d63..504fab1b4b 100644 --- a/src/libsystemd-bus/bus-introspect.c +++ b/src/libsystemd-bus/bus-introspect.c @@ -121,6 +121,9 @@ int introspect_write_interface(struct introspect *i, const sd_bus_vtable *v) { for (; v->type != _SD_BUS_VTABLE_END; v++) { + if (v->type != _SD_BUS_VTABLE_START && (v->flags & SD_BUS_VTABLE_HIDDEN)) + continue; + switch (v->type) { case _SD_BUS_VTABLE_START: diff --git a/src/libsystemd-bus/bus-objects.c b/src/libsystemd-bus/bus-objects.c index 941c2810d8..8ffda2f95d 100644 --- a/src/libsystemd-bus/bus-objects.c +++ b/src/libsystemd-bus/bus-objects.c @@ -633,10 +633,16 @@ static int vtable_append_all_properties( assert(path); assert(c); + if (c->vtable[0].flags & SD_BUS_VTABLE_HIDDEN) + return 1; + for (v = c->vtable+1; v->type != _SD_BUS_VTABLE_END; v++) { if (v->type != _SD_BUS_VTABLE_PROPERTY && v->type != _SD_BUS_VTABLE_WRITABLE_PROPERTY) continue; + if (v->flags & SD_BUS_VTABLE_HIDDEN) + continue; + r = sd_bus_message_open_container(reply, 'e', "sv"); if (r < 0) return r; @@ -853,6 +859,9 @@ static int process_introspect( empty = false; + if (c->vtable[0].flags & SD_BUS_VTABLE_HIDDEN) + continue; + if (!streq_ptr(previous_interface, c->interface)) { if (previous_interface) |