From 698d83a7c8a93b347c03ff31362866e7a0f92cb7 Mon Sep 17 00:00:00 2001
From: Jacob Garber <jgarber1@ualberta.ca>
Date: Fri, 7 Jun 2019 10:28:54 -0600
Subject: lib: Prevent memory leak on error path

Free the tree before returning to prevent a leak.

Change-Id: I1132c0e7404eec1af3adc19a83257f28563f8a58
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Found-by: Coverity CID 1401799
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33298
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
---
 src/lib/device_tree.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/lib/device_tree.c b/src/lib/device_tree.c
index a5021ca8fd..ed878a25a3 100644
--- a/src/lib/device_tree.c
+++ b/src/lib/device_tree.c
@@ -259,11 +259,13 @@ struct device_tree *fdt_unflatten(const void *blob)
 
 	if (magic != FDT_HEADER_MAGIC) {
 		printk(BIOS_DEBUG, "Invalid device tree magic %#.8x!\n", magic);
+		free(tree);
 		return NULL;
 	}
 	if (last_comp_version > FDT_SUPPORTED_VERSION) {
 		printk(BIOS_DEBUG, "Unsupported device tree version %u(>=%u)\n",
 		       version, last_comp_version);
+		free(tree);
 		return NULL;
 	}
 	if (version > FDT_SUPPORTED_VERSION)
-- 
cgit v1.2.3