chiark / gitweb /
journal: add ability to browse journals of running OS containers
[elogind.git] / src / libsystemd-bus / sd-bus.c
index 81bfe0d92202847420922e6a5c7f8080fe6bc633..f991a09279eb7efef10ca18834c3dd84ef3fce96 100644 (file)
@@ -764,6 +764,9 @@ static int parse_container_address(sd_bus *b, const char **p, char **guid) {
         if (!machine)
                 return -EINVAL;
 
+        if (!filename_is_safe(machine))
+                return -EINVAL;
+
         free(b->machine);
         b->machine = machine;
         machine = NULL;
@@ -1214,7 +1217,9 @@ _public_ sd_bus *sd_bus_ref(sd_bus *bus) {
 }
 
 _public_ sd_bus *sd_bus_unref(sd_bus *bus) {
-        assert_return(bus, NULL);
+
+        if (!bus)
+                return NULL;
 
         if (REFCNT_DEC(bus->n_ref) <= 0)
                 bus_free(bus);
@@ -2643,7 +2648,9 @@ fail:
 
 _public_ int sd_bus_detach_event(sd_bus *bus) {
         assert_return(bus, -EINVAL);
-        assert_return(bus->event, -ENXIO);
+
+        if (!bus->event)
+                return 0;
 
         if (bus->input_io_event_source) {
                 sd_event_source_set_enabled(bus->input_io_event_source, SD_EVENT_OFF);
@@ -2668,7 +2675,7 @@ _public_ int sd_bus_detach_event(sd_bus *bus) {
         if (bus->event)
                 bus->event = sd_event_unref(bus->event);
 
-        return 0;
+        return 1;
 }
 
 _public_ sd_event* sd_bus_get_event(sd_bus *bus) {