From 7fff508d9fded08b696d5203558f696ff4b27e88 Mon Sep 17 00:00:00 2001 From: Elizabeth Chan Date: Fri, 7 Dec 2012 15:59:14 -0700 Subject: [PATCH 1/2] echan: fix to Jira TRQ-1506 - pbs_server segfault in unlock_queue. --- src/server/svr_movejob.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/svr_movejob.c b/src/server/svr_movejob.c index 497f5b15d4..93a885d6e9 100644 --- a/src/server/svr_movejob.c +++ b/src/server/svr_movejob.c @@ -266,9 +266,9 @@ int local_move( int parent_queue_mutex_held) { - pbs_queue *routing_que; - pbs_queue *dest_que; - pbs_queue *tmp_que; + pbs_queue *routing_que = NULL; + pbs_queue *dest_que = NULL; + pbs_queue *tmp_que = NULL; char *destination = pjob->ji_qs.ji_destin; int mtype; char log_buf[LOCAL_LOG_BUF_SIZE]; From 5a6cb671f1a89037457ab8d80a3db474935940af Mon Sep 17 00:00:00 2001 From: Elizabeth Chan Date: Fri, 7 Dec 2012 19:19:43 -0700 Subject: [PATCH 2/2] echan: Fix for TRQ-1506 - pbs_server segfault in unlock_queue call. Moved the initialization of the output parameters in the function get_parent_dest_queues before it returns when it encounters a non-satisfying condition (both parent and child point to the same queue) so that it won't be a cause of crash if its callers did not initialize its output arguments. --- src/server/queue_func.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/queue_func.c b/src/server/queue_func.c index bb9b450cd6..cae7ba8bd7 100644 --- a/src/server/queue_func.c +++ b/src/server/queue_func.c @@ -675,6 +675,9 @@ int get_parent_dest_queues( strcpy(jobid, pjob->ji_qs.ji_jobid); + *parent = NULL; + *dest = NULL; + if ((queue_parent_name != NULL) && (queue_dest_name != NULL)) { if (!strcmp(queue_parent_name, queue_dest_name)) @@ -696,8 +699,6 @@ int get_parent_dest_queues( unlock_queue(*parent, __func__, NULL, LOGLEVEL); - *parent = NULL; - *dest = NULL; lock_allques_mutex(&svr_queues, __func__, NULL, LOGLEVEL);