4
0
Эх сурвалжийг харах

fix defect 477 - header size calculated incorrectly results in assert

(Logical change 1.178)


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@599 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 жил өмнө
parent
commit
0dd9d0999f
1 өөрчлөгдсөн 9 нэмэгдсэн , 2 устгасан
  1. 9 2
      exec/evs.c

+ 9 - 2
exec/evs.c

@@ -310,7 +310,11 @@ static int message_handler_req_evs_mcast_joined (struct conn_info *conn_info, vo
 	int send_ok = 0;
 	int send_ok = 0;
 	int res;
 	int res;
 
 
-	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast);
+	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast) +
+		conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries *
+		sizeof (struct evs_group) +
+		req_lib_evs_mcast_joined->msg_len;
+
 	req_exec_evs_mcast.header.id = MESSAGE_REQ_EXEC_EVS_MCAST;
 	req_exec_evs_mcast.header.id = MESSAGE_REQ_EXEC_EVS_MCAST;
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_joined->msg_len;
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_joined->msg_len;
 	req_exec_evs_mcast.group_entries = conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries;
 	req_exec_evs_mcast.group_entries = conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries;
@@ -354,7 +358,10 @@ static int message_handler_req_evs_mcast_groups (struct conn_info *conn_info, vo
 	int send_ok = 0;
 	int send_ok = 0;
 	int res;
 	int res;
 
 
-	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast);
+	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast) +
+		sizeof (struct evs_group) * req_lib_evs_mcast_groups->group_entries +
+		req_lib_evs_mcast_groups->msg_len;
+
 	req_exec_evs_mcast.header.id = MESSAGE_REQ_EXEC_EVS_MCAST;
 	req_exec_evs_mcast.header.id = MESSAGE_REQ_EXEC_EVS_MCAST;
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_groups->msg_len;
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_groups->msg_len;
 	req_exec_evs_mcast.group_entries = req_lib_evs_mcast_groups->group_entries;
 	req_exec_evs_mcast.group_entries = req_lib_evs_mcast_groups->group_entries;