summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLans Zhang <jia.zhang@windriver.com>2017-08-09 16:10:14 +0800
committerPeter Jones <pjones@redhat.com>2017-08-11 14:10:43 -0400
commite6f3a6ecc396a71f78f8a2ea814e3b31d64475cd (patch)
tree38a65f6275ba9ffee26e5607a353b55ca33fa603
parent631265b7e9c447412d423ffed1b39dfd706054cd (diff)
downloadefi-boot-shim-e6f3a6ecc396a71f78f8a2ea814e3b31d64475cd.tar.gz
efi-boot-shim-e6f3a6ecc396a71f78f8a2ea814e3b31d64475cd.zip
fallback: fix double free of dp
If the boot option recorded in csv is not in a media device path, the corresponding full device path will be referred for creating the boot variable. However, the current code logic always frees the full device path (full_device_path) and the media device path (dp) separately. In order to resolve this issue, always check whether dp equals to full_device_path before freeing dp. Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
-rw-r--r--fallback.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fallback.c b/fallback.c
index 9b640773..2ef1b863 100644
--- a/fallback.c
+++ b/fallback.c
@@ -482,7 +482,7 @@ add_to_boot_list(CHAR16 *dirname, CHAR16 *filename, CHAR16 *label, CHAR16 *argum
err:
if (full_device_path)
FreePool(full_device_path);
- if (dp)
+ if (dp && dp != full_device_path)
FreePool(dp);
if (fullpath)
FreePool(fullpath);