Merge pull request #18579 from keszybz/fix-fragment-id-crash
Fix fragment id crash
This commit is contained in:
@@ -354,10 +354,16 @@ int unit_file_build_name_map(
|
||||
|
||||
/* Check if the symlink goes outside of our search path.
|
||||
* If yes, it's a linked unit file or mask, and we don't care about the target name.
|
||||
* Let's just store the link destination directly.
|
||||
* Let's just store the link source directly.
|
||||
* If not, let's verify that it's a good symlink. */
|
||||
char *tail = path_startswith_strv(simplified, lp->search_path);
|
||||
if (tail) {
|
||||
if (!tail) {
|
||||
log_debug("%s: linked unit file: %s → %s",
|
||||
__func__, filename, simplified);
|
||||
|
||||
dst = filename;
|
||||
} else {
|
||||
|
||||
bool self_alias;
|
||||
|
||||
dst = basename(simplified);
|
||||
@@ -380,10 +386,6 @@ int unit_file_build_name_map(
|
||||
}
|
||||
|
||||
log_debug("%s: alias: %s/%s → %s", __func__, *dir, de->d_name, dst);
|
||||
} else {
|
||||
dst = simplified;
|
||||
|
||||
log_debug("%s: linked unit file: %s/%s → %s", __func__, *dir, de->d_name, dst);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
@@ -5536,10 +5536,11 @@ int unit_load_fragment(Unit *u) {
|
||||
}
|
||||
}
|
||||
|
||||
/* We do the merge dance here because for some unit types, the unit might have aliases which are not
|
||||
/* Call merge_by_names with the name derived from the fragment path as the preferred name.
|
||||
*
|
||||
* We do the merge dance here because for some unit types, the unit might have aliases which are not
|
||||
* declared in the file system. In particular, this is true (and frequent) for device and swap units.
|
||||
*/
|
||||
Unit *merged;
|
||||
const char *id = u->id;
|
||||
_cleanup_free_ char *free_id = NULL;
|
||||
|
||||
@@ -5556,7 +5557,7 @@ int unit_load_fragment(Unit *u) {
|
||||
}
|
||||
}
|
||||
|
||||
merged = u;
|
||||
Unit *merged = u;
|
||||
r = merge_by_names(&merged, names, id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
Reference in New Issue
Block a user