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