summaryrefslogtreecommitdiff
path: root/src/machine/machine-dbus.c
diff options
context:
space:
mode:
authorLuca Boccassi <bluca@debian.org>2020-12-19 21:40:47 +0000
committerLennart Poettering <lennart@poettering.net>2020-12-21 21:48:13 +0100
commit8bab8029105e44ce78c5e11bffa203a1135fe201 (patch)
tree4f59489231f4d0be6b3688836747f6dbed4a620c /src/machine/machine-dbus.c
parent9df1e11e31588c5df39aa7efed05414273f93f69 (diff)
downloadsystemd-8bab8029105e44ce78c5e11bffa203a1135fe201.tar.gz
basic: add make_mount_point_inode helper
Creates a file or a directory depending on the source path, useful for creating mount points.
Diffstat (limited to 'src/machine/machine-dbus.c')
-rw-r--r--src/machine/machine-dbus.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
index 4646571668..5d8d4276e2 100644
--- a/src/machine/machine-dbus.c
+++ b/src/machine/machine-dbus.c
@@ -32,6 +32,7 @@
#include "missing_capability.h"
#include "mkdir.h"
#include "mount-util.h"
+#include "mountpoint-util.h"
#include "namespace-util.h"
#include "os-util.h"
#include "path-util.h"
@@ -908,10 +909,7 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu
/* Second, we mount the source file or directory to a directory inside of our MS_SLAVE playground. */
mount_tmp = strjoina(mount_slave, "/mount");
- if (S_ISDIR(st.st_mode))
- r = mkdir_errno_wrapper(mount_tmp, 0700);
- else
- r = touch(mount_tmp);
+ r = make_mount_point_inode_from_stat(&st, mount_tmp, 0700);
if (r < 0) {
sd_bus_error_set_errnof(error, r, "Failed to create temporary mount point %s: %m", mount_tmp);
goto finish;
@@ -1003,12 +1001,8 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu
}
if (make_file_or_directory) {
- if (S_ISDIR(st.st_mode))
- (void) mkdir_p(dest, 0755);
- else {
- (void) mkdir_parents(dest, 0755);
- (void) mknod(dest, S_IFREG|0600, 0);
- }
+ (void) mkdir_parents(dest, 0755);
+ (void) make_mount_point_inode_from_stat(&st, dest, 0700);
}
mount_inside = strjoina("/run/host/incoming/", basename(mount_outside));