X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmkdir-label.c;h=2b9cb161cb2829cca6095290c0165aae8abd4a01;hb=9f03ee51a2207954ef18be79ca3e11cd14ca56fd;hp=4ee6251bcdf055cf4ab73802ca3447456d5364b4;hpb=39bdfa31f2f00c3357e2a7a5f139abee6d7c7cd3;p=elogind.git diff --git a/src/shared/mkdir-label.c b/src/shared/mkdir-label.c index 4ee6251bc..2b9cb161c 100644 --- a/src/shared/mkdir-label.c +++ b/src/shared/mkdir-label.c @@ -32,6 +32,32 @@ #include "path-util.h" #include "mkdir.h" +static int label_mkdir(const char *path, mode_t mode) { + int r; + + if (mac_selinux_use()) { + r = mac_selinux_mkdir(path, mode); + if (r < 0) + return r; + } + + if (mac_smack_use()) { + r = mkdir(path, mode); + if (r < 0 && errno != EEXIST) + return -errno; + + r = mac_smack_relabel_in_dev(path); + if (r < 0) + return r; + } + + r = mkdir(path, mode); + if (r < 0 && errno != EEXIST) + return -errno; + + return 0; +} + int mkdir_label(const char *path, mode_t mode) { return label_mkdir(path, mode); } @@ -44,10 +70,6 @@ int mkdir_parents_label(const char *path, mode_t mode) { return mkdir_parents_internal(NULL, path, mode, label_mkdir); } -int mkdir_parents_prefix_label(const char *prefix, const char *path, mode_t mode) { - return mkdir_parents_internal(prefix, path, mode, label_mkdir); -} - int mkdir_p_label(const char *path, mode_t mode) { return mkdir_p_internal(NULL, path, mode, label_mkdir); }