diff options
-rw-r--r-- | man/systemd.unit.xml | 3 | ||||
-rw-r--r-- | src/analyze/analyze-condition.c | 4 | ||||
-rw-r--r-- | src/core/dbus-unit.c | 22 | ||||
-rw-r--r-- | src/core/load-fragment-gperf.gperf.m4 | 2 | ||||
-rw-r--r-- | src/core/load-fragment.c | 55 | ||||
-rw-r--r-- | src/core/load-fragment.h | 1 | ||||
-rw-r--r-- | src/shared/condition.c | 21 | ||||
-rw-r--r-- | src/shared/condition.h | 2 | ||||
-rw-r--r-- | src/test/test-condition.c | 15 | ||||
-rw-r--r-- | test/fuzz/fuzz-unit-file/systemd-machined.service | 3 |
10 files changed, 11 insertions, 117 deletions
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 7ef6080237..50f35aaa3c 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1092,9 +1092,6 @@ <para>Except for <varname>ConditionPathIsSymbolicLink=</varname>, all path checks follow symlinks.</para> <variablelist class='unit-directives'> - <!-- We do not document ConditionNull= here, as it is not particularly useful and probably just - confusing. --> - <varlistentry> <term><varname>ConditionArchitecture=</varname></term> diff --git a/src/analyze/analyze-condition.c b/src/analyze/analyze-condition.c index 13f75e813a..e1365e1805 100644 --- a/src/analyze/analyze-condition.c +++ b/src/analyze/analyze-condition.c @@ -38,9 +38,7 @@ static int parse_condition(Unit *u, const char *line) { p += strspn(p, WHITESPACE); - if (t == CONDITION_NULL) /* deprecated, but we should still parse this for now */ - callback = config_parse_unit_condition_null; - else if (condition_takes_path(t)) + if (condition_takes_path(t)) callback = config_parse_unit_condition_path; else callback = config_parse_unit_condition_string; diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 9e9d3b101e..e799771c22 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -1974,14 +1974,11 @@ static int bus_set_transient_conditions( if (t < 0) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid condition type: %s", type_name); - if (t != CONDITION_NULL) { - if (isempty(param)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Condition parameter in %s is empty", type_name); + if (isempty(param)) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Condition parameter in %s is empty", type_name); - if (condition_takes_path(t) && !path_is_absolute(param)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path in condition %s is not absolute: %s", type_name, param); - } else - param = NULL; + if (condition_takes_path(t) && !path_is_absolute(param)) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path in condition %s is not absolute: %s", type_name, param); if (!UNIT_WRITE_FLAGS_NOOP(flags)) { Condition *c; @@ -1992,14 +1989,9 @@ static int bus_set_transient_conditions( LIST_PREPEND(conditions, *list, c); - if (t != CONDITION_NULL) - unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, - "%s=%s%s%s", type_name, - trigger ? "|" : "", negate ? "!" : "", param); - else - unit_write_settingf(u, flags, name, - "%s=%s%s", type_name, - trigger ? "|" : "", yes_no(!negate)); + unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, + "%s=%s%s%s", type_name, + trigger ? "|" : "", negate ? "!" : "", param); } empty = false; diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 1e6bd6483c..a191de62af 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -292,7 +292,6 @@ Unit.ConditionEnvironment, config_parse_unit_condition_string, CONDITION_E Unit.ConditionUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, conditions) Unit.ConditionGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, conditions) Unit.ConditionControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, conditions) -Unit.ConditionNull, config_parse_unit_condition_null, 0, offsetof(Unit, conditions) Unit.AssertPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, asserts) Unit.AssertPathExistsGlob, config_parse_unit_condition_path, CONDITION_PATH_EXISTS_GLOB, offsetof(Unit, asserts) Unit.AssertPathIsDirectory, config_parse_unit_condition_path, CONDITION_PATH_IS_DIRECTORY, offsetof(Unit, asserts) @@ -319,7 +318,6 @@ Unit.AssertEnvironment, config_parse_unit_condition_string, CONDITION_E Unit.AssertUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, asserts) Unit.AssertGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, asserts) Unit.AssertControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, asserts) -Unit.AssertNull, config_parse_unit_condition_null, 0, offsetof(Unit, asserts) Unit.CollectMode, config_parse_collect_mode, 0, offsetof(Unit, collect_mode) m4_dnl Service.PIDFile, config_parse_pid_file, 0, offsetof(Service, pid_file) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 266382c84c..cfd04f3b49 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -2999,60 +2999,6 @@ int config_parse_unit_condition_string( return 0; } -int config_parse_unit_condition_null( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - Condition **list = data, *c; - bool trigger, negate; - int b; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - log_syntax(unit, LOG_WARNING, filename, line, 0, "%s= is deprecated, please do not use.", lvalue); - - if (isempty(rvalue)) { - /* Empty assignment resets the list */ - *list = condition_free_list(*list); - return 0; - } - - trigger = rvalue[0] == '|'; - if (trigger) - rvalue++; - - negate = rvalue[0] == '!'; - if (negate) - rvalue++; - - b = parse_boolean(rvalue); - if (b < 0) { - log_syntax(unit, LOG_ERR, filename, line, b, "Failed to parse boolean value in condition, ignoring: %s", rvalue); - return 0; - } - - if (!b) - negate = !negate; - - c = condition_new(CONDITION_NULL, NULL, trigger, negate); - if (!c) - return log_oom(); - - LIST_PREPEND(conditions, *list, c); - return 0; -} - int config_parse_unit_requires_mounts_for( const char *unit, const char *filename, @@ -5266,7 +5212,6 @@ void unit_dump_config_items(FILE *f) { { config_parse_ip_tos, "TOS" }, { config_parse_unit_condition_path, "CONDITION" }, { config_parse_unit_condition_string, "CONDITION" }, - { config_parse_unit_condition_null, "CONDITION" }, { config_parse_unit_slice, "SLICE" }, { config_parse_documentation, "URL" }, { config_parse_service_timeout, "SECONDS" }, diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index 2672db5ace..cee5717d0f 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -58,7 +58,6 @@ CONFIG_PARSER_PROTOTYPE(config_parse_unit_env_file); CONFIG_PARSER_PROTOTYPE(config_parse_ip_tos); CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_path); CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_string); -CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_null); CONFIG_PARSER_PROTOTYPE(config_parse_kill_mode); CONFIG_PARSER_PROTOTYPE(config_parse_notify_access); CONFIG_PARSER_PROTOTYPE(config_parse_emergency_action); diff --git a/src/shared/condition.c b/src/shared/condition.c index bf3b5fa162..1f6105622a 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -52,7 +52,7 @@ Condition* condition_new(ConditionType type, const char *parameter, bool trigger assert(type >= 0); assert(type < _CONDITION_TYPE_MAX); - assert((!parameter) == (type == CONDITION_NULL)); + assert(parameter); c = new(Condition, 1); if (!c) @@ -776,15 +776,6 @@ static int condition_test_file_is_executable(Condition *c, char **env) { (st.st_mode & 0111)); } -static int condition_test_null(Condition *c, char **env) { - assert(c); - assert(c->type == CONDITION_NULL); - - /* Note that during parsing we already evaluate the string and - * store it in c->negate */ - return true; -} - int condition_test(Condition *c, char **env) { static int (*const condition_tests[_CONDITION_TYPE_MAX])(Condition *c, char **env) = { @@ -811,7 +802,6 @@ int condition_test(Condition *c, char **env) { [CONDITION_USER] = condition_test_user, [CONDITION_GROUP] = condition_test_group, [CONDITION_CONTROL_GROUP_CONTROLLER] = condition_test_control_group_controller, - [CONDITION_NULL] = condition_test_null, [CONDITION_CPUS] = condition_test_cpus, [CONDITION_MEMORY] = condition_test_memory, [CONDITION_ENVIRONMENT] = condition_test_environment, @@ -859,23 +849,20 @@ bool condition_test_list( r = condition_test(c, env); if (logger) { - const char *p = c->type == CONDITION_NULL ? "true" : c->parameter; - assert(p); - if (r < 0) logger(userdata, LOG_WARNING, r, PROJECT_FILE, __LINE__, __func__, "Couldn't determine result for %s=%s%s%s, assuming failed: %m", to_string(c->type), c->trigger ? "|" : "", c->negate ? "!" : "", - p); + c->parameter); else logger(userdata, LOG_DEBUG, 0, PROJECT_FILE, __LINE__, __func__, "%s=%s%s%s %s.", to_string(c->type), c->trigger ? "|" : "", c->negate ? "!" : "", - p, + c->parameter, condition_result_to_string(c->result)); } @@ -937,7 +924,6 @@ static const char* const condition_type_table[_CONDITION_TYPE_MAX] = { [CONDITION_USER] = "ConditionUser", [CONDITION_GROUP] = "ConditionGroup", [CONDITION_CONTROL_GROUP_CONTROLLER] = "ConditionControlGroupController", - [CONDITION_NULL] = "ConditionNull", [CONDITION_CPUS] = "ConditionCPUs", [CONDITION_MEMORY] = "ConditionMemory", [CONDITION_ENVIRONMENT] = "ConditionEnvironment", @@ -969,7 +955,6 @@ static const char* const assert_type_table[_CONDITION_TYPE_MAX] = { [CONDITION_USER] = "AssertUser", [CONDITION_GROUP] = "AssertGroup", [CONDITION_CONTROL_GROUP_CONTROLLER] = "AssertControlGroupController", - [CONDITION_NULL] = "AssertNull", [CONDITION_CPUS] = "AssertCPUs", [CONDITION_MEMORY] = "AssertMemory", [CONDITION_ENVIRONMENT] = "AssertEnvironment", diff --git a/src/shared/condition.h b/src/shared/condition.h index fea74d228d..e5ad43f945 100644 --- a/src/shared/condition.h +++ b/src/shared/condition.h @@ -34,8 +34,6 @@ typedef enum ConditionType { CONDITION_FILE_NOT_EMPTY, CONDITION_FILE_IS_EXECUTABLE, - CONDITION_NULL, - CONDITION_USER, CONDITION_GROUP, diff --git a/src/test/test-condition.c b/src/test/test-condition.c index ddf2e669c0..d209c1304c 100644 --- a/src/test/test-condition.c +++ b/src/test/test-condition.c @@ -438,20 +438,6 @@ static void test_condition_test_kernel_version(void) { condition_free(condition); } -static void test_condition_test_null(void) { - Condition *condition; - - condition = condition_new(CONDITION_NULL, NULL, false, false); - assert_se(condition); - assert_se(condition_test(condition, environ) > 0); - condition_free(condition); - - condition = condition_new(CONDITION_NULL, NULL, false, true); - assert_se(condition); - assert_se(condition_test(condition, environ) == 0); - condition_free(condition); -} - static void test_condition_test_security(void) { Condition *condition; @@ -868,7 +854,6 @@ int main(int argc, char *argv[]) { test_condition_test_architecture(); test_condition_test_kernel_command_line(); test_condition_test_kernel_version(); - test_condition_test_null(); test_condition_test_security(); print_securities(); test_condition_test_virtualization(); diff --git a/test/fuzz/fuzz-unit-file/systemd-machined.service b/test/fuzz/fuzz-unit-file/systemd-machined.service index 70b627c5f4..79ee9861d8 100644 --- a/test/fuzz/fuzz-unit-file/systemd-machined.service +++ b/test/fuzz/fuzz-unit-file/systemd-machined.service @@ -15,9 +15,6 @@ Documentation=https://www.freedesktop.org/wiki/Software/systemd/machined Wants=machine.slice After=machine.slice RequiresMountsFor=/var/lib/machines -ConditionNull=true -ConditionNull= -ConditionNull=|!false OnFailureIsolate=false FailureActionExitStatus=222 FailureActionExitStatus= |