X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fsd-bus.c;h=edd917e30375786811727fd44590625e99ce3df1;hp=0a2ce3eb8dda1efc48af91a189e4315fda52f898;hb=9e5548644f76e893c246d54ae613856b67b8dc1d;hpb=a82cafb97bf841deded572cd4ade039853cbdc4e diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 0a2ce3eb8..edd917e30 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -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; @@ -1139,12 +1142,17 @@ _public_ int sd_bus_open_system_container(const char *machine, sd_bus **ret) { assert_return(machine, -EINVAL); assert_return(ret, -EINVAL); + assert_return(filename_is_safe(machine), -EINVAL); e = bus_address_escape(machine); if (!e) return -ENOMEM; +#ifdef ENABLE_KDBUS + p = strjoin("kernel:path=/dev/kdbus/ns/machine-", e, "/0-system/bus;x-container:machine=", e, NULL); +#else p = strjoin("x-container:machine=", e, NULL); +#endif if (!p) return -ENOMEM;