Przeglądaj źródła

segfault does not use source.conn unless the originating
request is local. The actual code tries to dereference pointers
created on another node.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1462 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 18 lat temu
rodzic
commit
c39ae9cc70
1 zmienionych plików z 3 dodań i 2 usunięć
  1. 3 2
      exec/lck.c

+ 3 - 2
exec/lck.c

@@ -731,7 +731,7 @@ static void message_handler_req_exec_lck_resourceopen (
 	struct resource *resource;
 	struct resource_cleanup *resource_cleanup;
 	SaAisErrorT error = SA_AIS_OK;
-	struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (req_exec_lck_resourceopen->source.conn);
+	struct lck_pd *lck_pd;
 
 	log_printf (LOG_LEVEL_NOTICE, "EXEC request: saLckResourceOpen %s\n",
 		get_mar_name_t (&req_exec_lck_resourceopen->resource_name));
@@ -780,7 +780,8 @@ static void message_handler_req_exec_lck_resourceopen (
 		if (resource_cleanup == 0) {
 			free (resource);
 			error = SA_AIS_ERR_NO_MEMORY;
-		} else {
+		} else { 
+			lck_pd = (struct lck_pd *)openais_conn_private_data_get (req_exec_lck_resourceopen->source.conn);
 			list_init (&resource_cleanup->list);
 			list_init (&resource_cleanup->resource_lock_list_head);
 			resource_cleanup->resource = resource;