X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmkdir-label.c;h=48941b3df44789912ff2a0f163deea1d5f57534c;hb=c80d766c8072dd0be311dcd31c17f9719775be44;hp=43ea2c25b71e2465b9c151026f6dcd0685ea1226;hpb=e2e07fec7b3002a19da48845a0985c7e8dc6cc84;p=elogind.git diff --git a/src/shared/mkdir-label.c b/src/shared/mkdir-label.c index 43ea2c25b..48941b3df 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_fix(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); }