#include "bus-label.h"
#include "bus-util.h"
#include "copy.h"
+#include "env-file.h"
#include "env-util.h"
#include "fd-util.h"
-#include "fileio.h"
#include "format-util.h"
#include "fs-util.h"
#include "in-addr-util.h"
#include "local-addresses.h"
#include "machine-dbus.h"
#include "machine.h"
+#include "missing_capability.h"
#include "mkdir.h"
+#include "namespace-util.h"
#include "os-util.h"
#include "path-util.h"
#include "process-util.h"
pair[1] = safe_close(pair[1]);
- f = fdopen(pair[0], "re");
+ f = fdopen(pair[0], "r");
if (!f)
return -errno;
if (r == 0)
return 1; /* Will call us back */
- master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC);
+ master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC, &pty_name);
if (master < 0)
return master;
- r = ptsname_namespace(master, &pty_name);
- if (r < 0)
- return r;
-
r = sd_bus_message_new_method_return(message, &reply);
if (r < 0)
return r;
break;
case MACHINE_CONTAINER: {
- _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
+ _cleanup_(sd_bus_close_unrefp) sd_bus *bus = NULL;
char *address;
r = sd_bus_new(&bus);
if (r == 0)
return 1; /* Will call us back */
- master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC);
+ master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC, &pty_name);
if (master < 0)
return master;
- r = ptsname_namespace(master, &pty_name);
- if (r < 0)
- return r;
-
p = path_startswith(pty_name, "/dev/pts/");
- if (!p)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "PTS name %s is invalid", pty_name);
+ assert(p);
r = container_bus_new(m, error, &allocated_bus);
if (r < 0)
if (r == 0)
return 1; /* Will call us back */
- master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC);
+ master = machine_openpt(m, O_RDWR|O_NOCTTY|O_CLOEXEC, &pty_name);
if (master < 0)
return master;
- r = ptsname_namespace(master, &pty_name);
- if (r < 0)
- return r;
-
p = path_startswith(pty_name, "/dev/pts/");
assert(p);
if (laccess(p, F_OK) < 0)
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Container does not allow propagation of mount points.");
- r = chase_symlinks(src, NULL, CHASE_TRAIL_SLASH, &chased_src);
+ r = chase_symlinks(src, NULL, CHASE_TRAIL_SLASH, &chased_src, NULL);
if (r < 0)
return sd_bus_error_set_errnof(error, r, "Failed to resolve source path: %m");
if (!e)
return NULL;
- return strappend("/org/freedesktop/machine1/machine/", e);
+ return strjoin("/org/freedesktop/machine1/machine/", e);
}
int machine_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error) {