string-util: replace version_is_valid()/version_is_valid_version_spec() by a common call
Let's take inspiration from string_is_safe() and take a flags field that allows fine tuning the validation. Then port over all current users of either function to the new logic. Note that this *does* change behaviour in various cases: 1. Generally: we'll now always accept the full UAPI.10 alphabet, including the "~" and "^" characters. As far as I can see there's no downside to this liberalization as none of the current consumers of the two functions uses these characters for anything else. 2. systemd-analyze compare-version will now accept version strings with "_" and "+" without complaining. I see no downside here, it just normalizes these debugging tools, to make them accept what most our other tools accept. 3. "bootctl link" will not accept empty version strings anymore Which is a bugfix I guess. 4. vpick will now refuse "_" and "+" in version strings. It kinda already did, because when parsing versions from filenames it uses "_" and "+" as name, architecture and attempt counter separators. We now systematically refuse it everywhere else in vpick too. This is hence a clean-up. Fixes: #28906 Replaces: #42815 #41937
This commit is contained in:
@@ -268,7 +268,7 @@ int pattern_match(const char *pattern, const char *s, InstanceMetadata *ret) {
|
||||
switch (e->type) {
|
||||
|
||||
case PATTERN_VERSION:
|
||||
if (!version_is_valid(t)) {
|
||||
if (!version_is_valid(t, VERSION_ALLOW_UNDERSCORE|VERSION_ALLOW_PLUS)) {
|
||||
log_debug("Version string is not valid, refusing: %s", t);
|
||||
goto nope;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user