mirror of
https://github.com/systemd/systemd.git
synced 2024-11-08 11:27:32 +03:00
sysv-generator: detect invalid provided unit names
Do not assume that a non-service unit type is a target.
This commit is contained in:
parent
2ab4c7c9f3
commit
2c09a745eb
@ -340,6 +340,7 @@ static int handle_provides(SysvStub *s, unsigned line, const char *full_text, co
|
|||||||
|
|
||||||
FOREACH_WORD_QUOTED(word, z, text, state_) {
|
FOREACH_WORD_QUOTED(word, z, text, state_) {
|
||||||
_cleanup_free_ char *n = NULL, *m = NULL;
|
_cleanup_free_ char *n = NULL, *m = NULL;
|
||||||
|
UnitType t;
|
||||||
|
|
||||||
n = strndup(word, z);
|
n = strndup(word, z);
|
||||||
if (!n)
|
if (!n)
|
||||||
@ -351,12 +352,13 @@ static int handle_provides(SysvStub *s, unsigned line, const char *full_text, co
|
|||||||
if (r == 0)
|
if (r == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (unit_name_to_type(m) == UNIT_SERVICE) {
|
t = unit_name_to_type(m);
|
||||||
|
if (t == UNIT_SERVICE) {
|
||||||
log_debug("Adding Provides: alias '%s' for '%s'", m, s->name);
|
log_debug("Adding Provides: alias '%s' for '%s'", m, s->name);
|
||||||
r = add_alias(s->name, m);
|
r = add_alias(s->name, m);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_warning_errno(r, "[%s:%u] Failed to add LSB Provides name %s, ignoring: %m", s->path, line, m);
|
log_warning_errno(r, "[%s:%u] Failed to add LSB Provides name %s, ignoring: %m", s->path, line, m);
|
||||||
} else {
|
} else if (t == UNIT_TARGET) {
|
||||||
/* NB: SysV targets which are provided by a
|
/* NB: SysV targets which are provided by a
|
||||||
* service are pulled in by the services, as
|
* service are pulled in by the services, as
|
||||||
* an indication that the generic service is
|
* an indication that the generic service is
|
||||||
@ -374,6 +376,10 @@ static int handle_provides(SysvStub *s, unsigned line, const char *full_text, co
|
|||||||
return log_oom();
|
return log_oom();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (t == _UNIT_TYPE_INVALID)
|
||||||
|
log_warning("Unit name '%s' is invalid", m);
|
||||||
|
else
|
||||||
|
log_warning("Unknown unit type for unit '%s'", m);
|
||||||
}
|
}
|
||||||
if (!isempty(state_))
|
if (!isempty(state_))
|
||||||
log_error("[%s:%u] Trailing garbage in Provides, ignoring.", s->path, line);
|
log_error("[%s:%u] Trailing garbage in Provides, ignoring.", s->path, line);
|
||||||
|
Loading…
Reference in New Issue
Block a user