diff options
author | Heinrich Schuchardt | 2018-09-16 07:20:21 +0200 |
---|---|---|
committer | Alexander Graf | 2018-09-23 21:55:30 +0200 |
commit | 79276eb2430d02c84a31fc5613e41aba05429184 (patch) | |
tree | deef3a84866c349a04c63fc2051be9e8ce040dff /cmd | |
parent | 8887acc68565cad187808db55cd4284385891b87 (diff) |
efi_loader: memory leak in efi_set_bootdev()
efi_set_bootdev() may be called repeatedly.
Free the memory allocated for device paths in previous calls.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/bootefi.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c index d6366c3e26d..c8812b0f5e2 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -603,6 +603,13 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path) char filename[32] = { 0 }; /* dp->str is u16[32] long */ char *s; + /* efi_set_bootdev is typically called repeatedly, recover memory */ + efi_free_pool(bootefi_device_path); + efi_free_pool(bootefi_image_path); + /* If blk_get_device_part_str fails, avoid duplicate free. */ + bootefi_device_path = NULL; + bootefi_image_path = NULL; + if (strcmp(dev, "Net")) { struct blk_desc *desc; disk_partition_t fs_partition; |