mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
namespace: Fix extension release memory leak
In apply_one_mount(), in the MOUNT_EXTENSION_DIRECTORY case, char **extension_release was used as a return pointer twice but only cleaned up once in the end. Fix it by removing duplicate code that was causing this issue. Fixes issue introduced in 55ea4ef096543d2bceea9315868d5aca945d7a57.
This commit is contained in:
parent
4cf7a676af
commit
010ea061fc
@ -1623,12 +1623,24 @@ static int apply_one_mount(
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to extract extension name from %s: %m", mount_entry_source(m));
|
||||
|
||||
r = load_extension_release_pairs(mount_entry_source(m), IMAGE_SYSEXT, extension_name, /* relax_extension_release_check= */ false, &extension_release);
|
||||
r = load_extension_release_pairs(
|
||||
mount_entry_source(m),
|
||||
IMAGE_SYSEXT,
|
||||
extension_name,
|
||||
/* relax_extension_release_check= */ false,
|
||||
&extension_release);
|
||||
if (r == -ENOENT) {
|
||||
r = load_extension_release_pairs(mount_entry_source(m), IMAGE_CONFEXT, extension_name, /* relax_extension_release_check= */ false, &extension_release);
|
||||
r = load_extension_release_pairs(
|
||||
mount_entry_source(m),
|
||||
IMAGE_CONFEXT,
|
||||
extension_name,
|
||||
/* relax_extension_release_check= */ false,
|
||||
&extension_release);
|
||||
if (r >= 0)
|
||||
class = IMAGE_CONFEXT;
|
||||
}
|
||||
if (r == -ENOENT && m->ignore)
|
||||
return 0;
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to acquire 'extension-release' data of extension tree %s: %m", mount_entry_source(m));
|
||||
|
||||
@ -1643,12 +1655,6 @@ static int apply_one_mount(
|
||||
if (isempty(host_os_release_id))
|
||||
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "'ID' field not found or empty in 'os-release' data of OS tree '%s'.", empty_to_root(root_directory));
|
||||
|
||||
r = load_extension_release_pairs(mount_entry_source(m), class, extension_name, /* relax_extension_release_check= */ false, &extension_release);
|
||||
if (r == -ENOENT && m->ignore)
|
||||
return 0;
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to parse directory %s extension-release metadata: %m", extension_name);
|
||||
|
||||
r = extension_release_validate(
|
||||
extension_name,
|
||||
host_os_release_id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user