diff --git a/tools/fiptool/fiptool.c b/tools/fiptool/fiptool.c
index e70ff364b738a593e954b68abf2802e849b248b8..e4348ee857b7a597f7c704eb8ca9b2f7d04c529a 100644
--- a/tools/fiptool/fiptool.c
+++ b/tools/fiptool/fiptool.c
@@ -169,7 +169,10 @@ static void free_image_desc(image_desc_t *desc)
 	free(desc->name);
 	free(desc->cmdline_name);
 	free(desc->action_arg);
-	free(desc->image);
+	if (desc->image) {
+		free(desc->image->buffer);
+		free(desc->image);
+	}
 	free(desc);
 }