mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-27 14:03:43 +03:00
systemctl: fix 'systemctl enable getty@.service'
This commit is contained in:
parent
f34277d911
commit
b9c0d4415b
@ -1431,7 +1431,7 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_final) {
|
|||||||
* unit name. */
|
* unit name. */
|
||||||
name = file_name_from_path(*filename);
|
name = file_name_from_path(*filename);
|
||||||
|
|
||||||
if (unit_name_is_valid(name)) {
|
if (unit_name_is_valid(name, false)) {
|
||||||
if (!(id = set_get(names, name))) {
|
if (!(id = set_get(names, name))) {
|
||||||
|
|
||||||
if (!(id = strdup(name)))
|
if (!(id = strdup(name)))
|
||||||
|
@ -1641,7 +1641,7 @@ int manager_load_unit_prepare(Manager *m, const char *name, const char *path, DB
|
|||||||
if (!name)
|
if (!name)
|
||||||
name = file_name_from_path(path);
|
name = file_name_from_path(path);
|
||||||
|
|
||||||
if (!unit_name_is_valid(name)) {
|
if (!unit_name_is_valid(name, false)) {
|
||||||
dbus_set_error(e, BUS_ERROR_INVALID_NAME, "Unit name %s is not valid.", name);
|
dbus_set_error(e, BUS_ERROR_INVALID_NAME, "Unit name %s is not valid.", name);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, DBusError *e, Sn
|
|||||||
assert(_s);
|
assert(_s);
|
||||||
|
|
||||||
if (name) {
|
if (name) {
|
||||||
if (!unit_name_is_valid(name)) {
|
if (!unit_name_is_valid(name, false)) {
|
||||||
dbus_set_error(e, BUS_ERROR_INVALID_NAME, "Unit name %s is not valid.", name);
|
dbus_set_error(e, BUS_ERROR_INVALID_NAME, "Unit name %s is not valid.", name);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -3247,7 +3247,7 @@ static int install_info_add(const char *name) {
|
|||||||
|
|
||||||
assert(will_install);
|
assert(will_install);
|
||||||
|
|
||||||
if (!unit_name_is_valid_no_type(name)) {
|
if (!unit_name_is_valid_no_type(name, true)) {
|
||||||
log_warning("Unit name %s is not a valid unit name.", name);
|
log_warning("Unit name %s is not a valid unit name.", name);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -3633,12 +3633,6 @@ static int install_info_symlink_alias(const char *verb, InstallInfo *i, const ch
|
|||||||
|
|
||||||
STRV_FOREACH(s, i->aliases) {
|
STRV_FOREACH(s, i->aliases) {
|
||||||
|
|
||||||
if (!unit_name_is_valid_no_type(*s)) {
|
|
||||||
log_error("Invalid name %s.", *s);
|
|
||||||
r = -EINVAL;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(alias_path);
|
free(alias_path);
|
||||||
if (!(alias_path = path_make_absolute(*s, config_path))) {
|
if (!(alias_path = path_make_absolute(*s, config_path))) {
|
||||||
log_error("Out of memory");
|
log_error("Out of memory");
|
||||||
@ -3670,7 +3664,7 @@ static int install_info_symlink_wants(const char *verb, InstallInfo *i, const ch
|
|||||||
assert(config_path);
|
assert(config_path);
|
||||||
|
|
||||||
STRV_FOREACH(s, i->wanted_by) {
|
STRV_FOREACH(s, i->wanted_by) {
|
||||||
if (!unit_name_is_valid_no_type(*s)) {
|
if (!unit_name_is_valid_no_type(*s, true)) {
|
||||||
log_error("Invalid name %s.", *s);
|
log_error("Invalid name %s.", *s);
|
||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
goto finish;
|
goto finish;
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
|
||||||
":-_.\\"
|
":-_.\\"
|
||||||
|
|
||||||
bool unit_name_is_valid_no_type(const char *n) {
|
bool unit_name_is_valid_no_type(const char *n, bool template_ok) {
|
||||||
const char *e, *i, *at;
|
const char *e, *i, *at;
|
||||||
|
|
||||||
/* Valid formats:
|
/* Valid formats:
|
||||||
@ -63,7 +63,7 @@ bool unit_name_is_valid_no_type(const char *n) {
|
|||||||
if (at == n)
|
if (at == n)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (at[1] == '.')
|
if (!template_ok && at+1 == e)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ char *unit_name_change_suffix(const char *n, const char *suffix) {
|
|||||||
size_t a, b;
|
size_t a, b;
|
||||||
|
|
||||||
assert(n);
|
assert(n);
|
||||||
assert(unit_name_is_valid_no_type(n));
|
assert(unit_name_is_valid_no_type(n, true));
|
||||||
assert(suffix);
|
assert(suffix);
|
||||||
|
|
||||||
assert_se(e = strrchr(n, '.'));
|
assert_se(e = strrchr(n, '.'));
|
||||||
|
@ -30,7 +30,7 @@ int unit_name_to_instance(const char *n, char **instance);
|
|||||||
char* unit_name_to_prefix(const char *n);
|
char* unit_name_to_prefix(const char *n);
|
||||||
char* unit_name_to_prefix_and_instance(const char *n);
|
char* unit_name_to_prefix_and_instance(const char *n);
|
||||||
|
|
||||||
bool unit_name_is_valid_no_type(const char *n);
|
bool unit_name_is_valid_no_type(const char *n, bool template_ok);
|
||||||
bool unit_prefix_is_valid(const char *p);
|
bool unit_prefix_is_valid(const char *p);
|
||||||
bool unit_instance_is_valid(const char *i);
|
bool unit_instance_is_valid(const char *i);
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ int unit_add_name(Unit *u, const char *text) {
|
|||||||
if (!s)
|
if (!s)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (!unit_name_is_valid(s)) {
|
if (!unit_name_is_valid(s, false)) {
|
||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -2222,14 +2222,14 @@ UnitType unit_name_to_type(const char *n) {
|
|||||||
return _UNIT_TYPE_INVALID;
|
return _UNIT_TYPE_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool unit_name_is_valid(const char *n) {
|
bool unit_name_is_valid(const char *n, bool template_ok) {
|
||||||
UnitType t;
|
UnitType t;
|
||||||
|
|
||||||
t = unit_name_to_type(n);
|
t = unit_name_to_type(n);
|
||||||
if (t < 0 || t >= _UNIT_TYPE_MAX)
|
if (t < 0 || t >= _UNIT_TYPE_MAX)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return unit_name_is_valid_no_type(n);
|
return unit_name_is_valid_no_type(n, template_ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = {
|
static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = {
|
||||||
|
@ -505,7 +505,7 @@ bool unit_pending_active(Unit *u);
|
|||||||
int unit_add_default_target_dependency(Unit *u, Unit *target);
|
int unit_add_default_target_dependency(Unit *u, Unit *target);
|
||||||
|
|
||||||
UnitType unit_name_to_type(const char *n);
|
UnitType unit_name_to_type(const char *n);
|
||||||
bool unit_name_is_valid(const char *n);
|
bool unit_name_is_valid(const char *n, bool template_ok);
|
||||||
|
|
||||||
const char *unit_load_state_to_string(UnitLoadState i);
|
const char *unit_load_state_to_string(UnitLoadState i);
|
||||||
UnitLoadState unit_load_state_from_string(const char *s);
|
UnitLoadState unit_load_state_from_string(const char *s);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user