Blob Blame History Raw
commit acc8c350f9cf6779ed1b5d37aaa904cd720fa1df
Author: Dominik Brodowski <linux@dominikbrodowski.net>
Date:   Sun Aug 2 14:04:59 2009 +0200

    pccardctl: add array out-of-bounds exception (2)
    
    Fix another instance where an array out-of-bounds exception relating to
    func_id was triggered. Spotted at[1], still pending bugfix noted by
    Wolfram Sang.
    
    [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=406251
    
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

diff --git a/src/pccardctl.c b/src/pccardctl.c
index d3d3317..d5cbfef 100644
--- a/src/pccardctl.c
+++ b/src/pccardctl.c
@@ -589,8 +589,12 @@ static int lspcmcia(unsigned long socket_no, int verbose)
 			if (!pccardctl_get_one(socket_no, "manf_id", &manf_id))
 				if (!pccardctl_get_one(socket_no, "card_id", &card_id))
 					printf("manf_id: 0x%04x\tcard_id: 0x%04x\n\t\t\t", manf_id, card_id);
-			if (!pccardctl_get_one(socket_no, "func_id", &manf_id))
-				printf("function: %d (%s)\n\t\t\t", manf_id, fn[manf_id]);
+			if (!pccardctl_get_one(socket_no, "func_id", &manf_id)) {
+				const char *s = "unknown";
+				if (manf_id < sizeof(fn)/sizeof(*fn))
+					s = fn[manf_id];
+				printf("function: %d (%s)\n\t\t\t", manf_id, s);
+			}
 			for (j=1;j<=4;j++) {
 				snprintf(file, SYSFS_PATH_MAX, "prod_id%d", j);
 				pccardctl_get_string(socket_no, file, &res);