X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftmpfiles%2Ftmpfiles.c;h=1e4675f87eb9ecf304e46290613c8e72e58810b9;hb=1cf3c30c0787f941b0f6d0b11ab504ddee3b0b8f;hp=7eafd6bb30791eb3d1922d58f73a4fc9ccf06d2c;hpb=9ed2a35e93f4a9e82585f860f54cdcbbdf3e1f86;p=elogind.git diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 7eafd6bb3..1e4675f87 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -259,7 +259,7 @@ static int dir_is_mount_point(DIR *d, const char *subdir) { /* got only one handle; assume different mount points if one * of both queries was not supported by the filesystem */ - if (r_p == -ENOSYS || r_p == -ENOTSUP || r == -ENOSYS || r == -ENOTSUP) + if (r_p == -ENOSYS || r_p == -EOPNOTSUPP || r == -ENOSYS || r == -EOPNOTSUPP) return true; /* return error */ @@ -509,9 +509,9 @@ static int write_one_file(Item *i, const char *path) { i->type == TRUNCATE_FILE ? O_CREAT|O_TRUNC|O_NOFOLLOW : 0; RUN_WITH_UMASK(0000) { - label_context_set(path, S_IFREG); + mac_selinux_create_file_prepare(path, S_IFREG); fd = open(path, flags|O_NDELAY|O_CLOEXEC|O_WRONLY|O_NOCTTY, i->mode); - label_context_clear(); + mac_selinux_create_file_clear(); } if (fd < 0) { @@ -743,9 +743,9 @@ static int create_item(Item *i) { case CREATE_FIFO: RUN_WITH_UMASK(0000) { - label_context_set(i->path, S_IFIFO); + mac_selinux_create_file_prepare(i->path, S_IFIFO); r = mkfifo(i->path, i->mode); - label_context_clear(); + mac_selinux_create_file_clear(); } if (r < 0) { @@ -764,9 +764,9 @@ static int create_item(Item *i) { if (i->force) { RUN_WITH_UMASK(0000) { - label_context_set(i->path, S_IFIFO); + mac_selinux_create_file_prepare(i->path, S_IFIFO); r = mkfifo_atomic(i->path, i->mode); - label_context_clear(); + mac_selinux_create_file_clear(); } if (r < 0) { @@ -788,9 +788,9 @@ static int create_item(Item *i) { case CREATE_SYMLINK: - label_context_set(i->path, S_IFLNK); + mac_selinux_create_file_prepare(i->path, S_IFLNK); r = symlink(i->argument, i->path); - label_context_clear(); + mac_selinux_create_file_clear(); if (r < 0) { _cleanup_free_ char *x = NULL; @@ -804,9 +804,9 @@ static int create_item(Item *i) { if (r < 0 || !streq(i->argument, x)) { if (i->force) { - label_context_set(i->path, S_IFLNK); + mac_selinux_create_file_prepare(i->path, S_IFLNK); r = symlink_atomic(i->argument, i->path); - label_context_clear(); + mac_selinux_create_file_clear(); if (r < 0) { log_error("symlink(%s, %s) failed: %s", i->argument, i->path, strerror(-r)); @@ -838,9 +838,9 @@ static int create_item(Item *i) { file_type = i->type == CREATE_BLOCK_DEVICE ? S_IFBLK : S_IFCHR; RUN_WITH_UMASK(0000) { - label_context_set(i->path, file_type); + mac_selinux_create_file_prepare(i->path, file_type); r = mknod(i->path, i->mode | file_type, i->major_minor); - label_context_clear(); + mac_selinux_create_file_clear(); } if (r < 0) { @@ -865,9 +865,9 @@ static int create_item(Item *i) { if (i->force) { RUN_WITH_UMASK(0000) { - label_context_set(i->path, file_type); + mac_selinux_create_file_prepare(i->path, file_type); r = mknod_atomic(i->path, i->mode | file_type, i->major_minor); - label_context_clear(); + mac_selinux_create_file_clear(); } if (r < 0) { @@ -1064,7 +1064,7 @@ static int clean_item(Item *i) { static int process_item(Item *i) { int r, q, p; - char prefix[PATH_MAX]; + _cleanup_free_ char *prefix = NULL; assert(i); @@ -1073,6 +1073,10 @@ static int process_item(Item *i) { i->done = true; + prefix = malloc(strlen(i->path) + 1); + if (!prefix) + return log_oom(); + PATH_FOREACH_PREFIX(prefix, i->path) { Item *j; @@ -1606,7 +1610,7 @@ int main(int argc, char *argv[]) { umask(0022); - label_init(NULL); + mac_selinux_init(NULL); items = hashmap_new(&string_hash_ops); globs = hashmap_new(&string_hash_ops); @@ -1666,7 +1670,7 @@ finish: set_free_free(unix_sockets); - label_finish(); + mac_selinux_finish(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }