From bdace82d23a8406a417c2ee684c1b30e5d2971f9 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Wed, 9 Mar 2011 23:54:21 +0000
Subject: [PATCH] fix to handle core of sview when dealing with bad pointers

---
 src/sview/block_info.c | 2 ++
 src/sview/job_info.c   | 4 ++--
 src/sview/node_info.c  | 4 +++-
 src/sview/part_info.c  | 3 ++-
 4 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/sview/block_info.c b/src/sview/block_info.c
index 8db14a741bc..cc0185ba144 100644
--- a/src/sview/block_info.c
+++ b/src/sview/block_info.c
@@ -517,6 +517,8 @@ static List _create_block_list(partition_info_msg_t *part_info_ptr,
 		return NULL;
 	}
 	for (i=0; i<block_info_ptr->record_count; i++) {
+		if (!block_info_ptr->block_array[i])
+			break;
 		block_ptr = xmalloc(sizeof(sview_block_info_t));
 
 		block_ptr->bg_block_name
diff --git a/src/sview/job_info.c b/src/sview/job_info.c
index ab0ece159e6..6f19bb314fc 100644
--- a/src/sview/job_info.c
+++ b/src/sview/job_info.c
@@ -2467,8 +2467,8 @@ static List _create_job_info_list(job_info_msg_t *job_info_ptr,
 	}
 
 	for(i=0; i<job_info_ptr->record_count; i++) {
-		job_ptr = &(job_info_ptr->job_array[i]);
-
+		if (!(job_ptr = &(job_info_ptr->job_array[i])))
+			break;
 		sview_job_info_ptr = xmalloc(sizeof(sview_job_info_t));
 		sview_job_info_ptr->job_ptr = job_ptr;
 		sview_job_info_ptr->step_list = list_create(NULL);
diff --git a/src/sview/node_info.c b/src/sview/node_info.c
index 7de54e74cc7..9aaa99756de 100644
--- a/src/sview/node_info.c
+++ b/src/sview/node_info.c
@@ -628,7 +628,9 @@ extern List create_node_info_list(node_info_msg_t *node_info_ptr,
 	}
 
 	for (i=0; i<node_info_ptr->record_count; i++) {
-		node_ptr = &(node_info_ptr->node_array[i]);
+		if (!(node_ptr = &(node_info_ptr->node_array[i])))
+			break;
+
 		if (!node_ptr->name || (node_ptr->name[0] == '\0'))
 			continue;
 
diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index 6206b1ecd1d..3da7a515d84 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -1574,7 +1574,8 @@ static List _create_part_info_list(partition_info_msg_t *part_info_ptr,
 	}
 
 	for (i=0; i<part_info_ptr->record_count; i++) {
-		part_ptr = &(part_info_ptr->partition_array[i]);
+		if (!(part_ptr = &(part_info_ptr->partition_array[i])))
+			break;
 		/* don't include configured excludes */
 		if (!working_sview_config.show_hidden &&
 		    part_ptr->flags & PART_FLAG_HIDDEN)
-- 
GitLab