]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/mkdir-label.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
5 #include "errno-util.h"
6 #include "mkdir-label.h"
7 #include "selinux-util.h"
8 #include "smack-util.h"
11 int mkdirat_label(int dirfd
, const char *path
, mode_t mode
) {
16 r
= mac_selinux_create_file_prepare_at(dirfd
, path
, S_IFDIR
);
20 r
= RET_NERRNO(mkdirat(dirfd
, path
, mode
));
21 mac_selinux_create_file_clear();
25 return mac_smack_fix_full(dirfd
, path
, NULL
, 0);
28 int mkdirat_safe_label(int dir_fd
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
) {
29 return mkdirat_safe_internal(dir_fd
, path
, mode
, uid
, gid
, flags
, mkdirat_label
);
32 int mkdirat_parents_label(int dir_fd
, const char *path
, mode_t mode
) {
33 return mkdirat_parents_internal(dir_fd
, path
, mode
, UID_INVALID
, UID_INVALID
, 0, mkdirat_label
);
36 int mkdir_parents_safe_label(const char *prefix
, const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
) {
37 return mkdir_parents_internal(prefix
, path
, mode
, uid
, gid
, flags
, mkdirat_label
);
40 int mkdir_p_label(const char *path
, mode_t mode
) {
41 return mkdir_p_internal(NULL
, path
, mode
, UID_INVALID
, UID_INVALID
, 0, mkdirat_label
);