diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/load-fragment.c | 2 | ||||
| -rw-r--r-- | src/manager.c | 2 | ||||
| -rw-r--r-- | src/snapshot.c | 2 | ||||
| -rw-r--r-- | src/systemctl.c | 10 | ||||
| -rw-r--r-- | src/unit-name.c | 6 | ||||
| -rw-r--r-- | src/unit-name.h | 2 | ||||
| -rw-r--r-- | src/unit.c | 6 | ||||
| -rw-r--r-- | src/unit.h | 2 | 
8 files changed, 13 insertions, 19 deletions
| diff --git a/src/load-fragment.c b/src/load-fragment.c index 54b1af041c..740c11c3c2 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -1431,7 +1431,7 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_final) {                   * unit name. */                  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 = strdup(name))) diff --git a/src/manager.c b/src/manager.c index 26a631e9d7..7e9075aad6 100644 --- a/src/manager.c +++ b/src/manager.c @@ -1641,7 +1641,7 @@ int manager_load_unit_prepare(Manager *m, const char *name, const char *path, DB          if (!name)                  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);                  return -EINVAL;          } diff --git a/src/snapshot.c b/src/snapshot.c index f58d46e917..a23f2dba40 100644 --- a/src/snapshot.c +++ b/src/snapshot.c @@ -186,7 +186,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, DBusError *e, Sn          assert(_s);          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);                          return -EINVAL;                  } diff --git a/src/systemctl.c b/src/systemctl.c index 4beec0fca5..c8384ff530 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -3247,7 +3247,7 @@ static int install_info_add(const char *name) {          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);                  return -EINVAL;          } @@ -3633,12 +3633,6 @@ static int install_info_symlink_alias(const char *verb, InstallInfo *i, const ch          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);                  if (!(alias_path = path_make_absolute(*s, config_path))) {                          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);          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);                          r = -EINVAL;                          goto finish; diff --git a/src/unit-name.c b/src/unit-name.c index 0e86b554c2..cd6e3cea5c 100644 --- a/src/unit-name.c +++ b/src/unit-name.c @@ -32,7 +32,7 @@          "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;          /* Valid formats: @@ -63,7 +63,7 @@ bool unit_name_is_valid_no_type(const char *n) {                  if (at == n)                          return false; -                if (at[1] == '.') +                if (!template_ok && at+1 == e)                          return false;          } @@ -150,7 +150,7 @@ char *unit_name_change_suffix(const char *n, const char *suffix) {          size_t a, b;          assert(n); -        assert(unit_name_is_valid_no_type(n)); +        assert(unit_name_is_valid_no_type(n, true));          assert(suffix);          assert_se(e = strrchr(n, '.')); diff --git a/src/unit-name.h b/src/unit-name.h index a752f3a2c7..db1a79e8d5 100644 --- a/src/unit-name.h +++ b/src/unit-name.h @@ -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_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_instance_is_valid(const char *i); diff --git a/src/unit.c b/src/unit.c index d2652bafb2..d45fe91560 100644 --- a/src/unit.c +++ b/src/unit.c @@ -103,7 +103,7 @@ int unit_add_name(Unit *u, const char *text) {          if (!s)                  return -ENOMEM; -        if (!unit_name_is_valid(s)) { +        if (!unit_name_is_valid(s, false)) {                  r = -EINVAL;                  goto fail;          } @@ -2222,14 +2222,14 @@ UnitType unit_name_to_type(const char *n) {          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;          t = unit_name_to_type(n);          if (t < 0 || t >= _UNIT_TYPE_MAX)                  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] = { diff --git a/src/unit.h b/src/unit.h index a020bd8a0d..aa818d4f21 100644 --- a/src/unit.h +++ b/src/unit.h @@ -505,7 +505,7 @@ bool unit_pending_active(Unit *u);  int unit_add_default_target_dependency(Unit *u, Unit *target);  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);  UnitLoadState unit_load_state_from_string(const char *s); | 
