]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/mkdir-label.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
11 #include "selinux-util.h"
12 #include "smack-util.h"
13 #include "user-util.h"
15 int mkdir_label(const char *path
, mode_t mode
) {
20 r
= mac_selinux_create_file_prepare(path
, S_IFDIR
);
24 r
= mkdir_errno_wrapper(path
, mode
);
25 mac_selinux_create_file_clear();
29 return mac_smack_fix(path
, 0);
32 int mkdirat_label(int dirfd
, const char *path
, mode_t mode
) {
37 r
= mac_selinux_create_file_prepare_at(dirfd
, path
, S_IFDIR
);
41 r
= mkdirat_errno_wrapper(dirfd
, path
, mode
);
42 mac_selinux_create_file_clear();
46 return mac_smack_fix_at(dirfd
, path
, 0);
49 int mkdir_safe_label(const char *path
, mode_t mode
, uid_t uid
, gid_t gid
, MkdirFlags flags
) {
50 return mkdir_safe_internal(path
, mode
, uid
, gid
, flags
, mkdir_label
);
53 int mkdir_parents_label(const char *path
, mode_t mode
) {
54 return mkdir_parents_internal(NULL
, path
, mode
, UID_INVALID
, UID_INVALID
, 0, mkdir_label
);
57 int mkdir_p_label(const char *path
, mode_t mode
) {
58 return mkdir_p_internal(NULL
, path
, mode
, UID_INVALID
, UID_INVALID
, 0, mkdir_label
);