X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fcondition.c;h=ec78169fc309355b2cf5ce4677e12e733e07daf1;hp=410fb36797808757f39bcf71fca52af994a6629f;hb=6baa7db00812437bbc87e73faa1a11b6cf631958;hpb=a55654d598c78f8e084aa6a18fec6eff900c9aed diff --git a/src/core/condition.c b/src/core/condition.c index 410fb3679..ec78169fc 100644 --- a/src/core/condition.c +++ b/src/core/condition.c @@ -45,13 +45,13 @@ static bool condition_test_security(Condition *c) { assert(c->type == CONDITION_SECURITY); if (streq(c->parameter, "selinux")) - return use_selinux() == !c->negate; + return mac_selinux_use() == !c->negate; + if (streq(c->parameter, "smack")) + return mac_smack_use() == !c->negate; if (streq(c->parameter, "apparmor")) - return use_apparmor() == !c->negate; + return mac_apparmor_use() == !c->negate; if (streq(c->parameter, "ima")) return use_ima() == !c->negate; - if (streq(c->parameter, "smack")) - return use_smack() == !c->negate; return c->negate; } @@ -120,6 +120,20 @@ static bool condition_test_needs_update(Condition *c) { (usr.st_mtim.tv_sec == other.st_mtim.tv_sec && usr.st_mtim.tv_nsec > other.st_mtim.tv_nsec)) == !c->negate; } +static bool condition_test_first_boot(Condition *c) { + int r; + + assert(c); + assert(c->parameter); + assert(c->type == CONDITION_FIRST_BOOT); + + r = parse_boolean(c->parameter); + if (r < 0) + return c->negate; + + return ((access("/run/systemd/first-boot", F_OK) >= 0) == !!r) == !c->negate; +} + static bool condition_test(Condition *c) { assert(c); @@ -202,6 +216,9 @@ static bool condition_test(Condition *c) { case CONDITION_NEEDS_UPDATE: return condition_test_needs_update(c); + case CONDITION_FIRST_BOOT: + return condition_test_first_boot(c); + case CONDITION_NULL: return !c->negate;