From 6c8bd91e29719b9db2198d6ebf1ea33a26f9f5aa Mon Sep 17 00:00:00 2001
From: Angel Pons <th3fanbus@gmail.com>
Date: Wed, 25 Mar 2020 13:35:45 +0100
Subject: Fix segfault when running `flashrom -L`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The raiden_debug programmer is of type USB. However, it does not set the
field `devs.dev`, which will result in a segfault when trying to print
the devices of the non-existing table.

Fix that by replacing `devs.note` with `devs.dev` and adding an empty
device table. Since Device IDs are not used to match programmers,
nothing could be added to the table.

TEST=Running `flashrom -L` no longer segfaults and returns normally.

Change-Id: Ie4171a11384c34abb102d1aadf86aa1b8829fc04
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/39826
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
---
 flashrom.c         | 2 +-
 programmer.h       | 1 +
 raiden_debug_spi.c | 5 +++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/flashrom.c b/flashrom.c
index e541b68f..081b705d 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -137,7 +137,7 @@ const struct programmer_entry programmer_table[] = {
 	{
 		.name			= "raiden_debug",
 		.type			= USB,
-		.devs.note		= "All programmer devices speaking the raiden protocol\n",
+		.devs.dev		= devs_raiden,
 		.init			= raiden_debug_spi_init,
 		.map_flash_region	= fallback_map,
 		.unmap_flash_region	= fallback_unmap,
diff --git a/programmer.h b/programmer.h
index 08500c6f..9a41be10 100644
--- a/programmer.h
+++ b/programmer.h
@@ -407,6 +407,7 @@ extern const struct dev_entry gfx_nvidia[];
 /* raiden_debug_spi.c */
 #if CONFIG_RAIDEN == 1
 int raiden_debug_spi_init(void);
+extern const struct dev_entry devs_raiden[];
 #endif
 
 /* drkaiser.c */
diff --git a/raiden_debug_spi.c b/raiden_debug_spi.c
index 69144554..173e3554 100644
--- a/raiden_debug_spi.c
+++ b/raiden_debug_spi.c
@@ -116,6 +116,11 @@
 #include <string.h>
 #include <unistd.h>
 
+/* FIXME: Add some programmer IDs here */
+const struct dev_entry devs_raiden[] = {
+	{0},
+};
+
 #define GOOGLE_VID                  (0x18D1)
 #define GOOGLE_RAIDEN_SPI_SUBCLASS  (0x51)
 #define GOOGLE_RAIDEN_SPI_PROTOCOL  (0x01)
-- 
cgit v1.2.3