Просмотр исходного кода

Get rid of some errors from valgrind by initializing variables.

(Logical change 1.23)


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@61 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 лет назад
Родитель
Сommit
5ac0ebb149
1 измененных файлов с 20 добавлено и 2 удалено
  1. 20 2
      exec/gmi.c

+ 20 - 2
exec/gmi.c

@@ -331,7 +331,7 @@ static struct memb_join memb_join;
 
 
 static struct memb_form_token memb_form_token;
 static struct memb_form_token memb_form_token;
 
 
-char iov_buffer[MESSAGE_SIZE_MAX];
+static char iov_buffer[MESSAGE_SIZE_MAX];
 
 
 static struct iovec gmi_iov_recv = {
 static struct iovec gmi_iov_recv = {
 	iov_base:	iov_buffer,
 	iov_base:	iov_buffer,
@@ -417,6 +417,8 @@ int gmi_init (
 int res;
 int res;
 
 
 	memcpy (&sockaddr_in_mcast, sockaddr_mcast, sizeof (struct sockaddr_in));
 	memcpy (&sockaddr_in_mcast, sockaddr_mcast, sizeof (struct sockaddr_in));
+	memset (&memb_next, 0, sizeof (struct sockaddr_in));
+	memset (iov_buffer, 0, MESSAGE_SIZE_MAX);
 
 
 	for (i = 0; i < PRIORITY_MAX; i++) {
 	for (i = 0; i < PRIORITY_MAX; i++) {
 		queue_init (&queues_pend_trans[i], QUEUE_PEND_TRANS_SIZE_MAX,
 		queue_init (&queues_pend_trans[i], QUEUE_PEND_TRANS_SIZE_MAX,
@@ -489,6 +491,9 @@ static int gmi_pend_trans_item_store (
 {
 {
 	int i, j;
 	int i, j;
 	struct gmi_pend_trans_item gmi_pend_trans_item;
 	struct gmi_pend_trans_item gmi_pend_trans_item;
+
+	memset (&gmi_pend_trans_item, 0, sizeof (struct gmi_pend_trans_item));
+
 	/*
 	/*
 	 * Store pending item
 	 * Store pending item
 	 */
 	 */
@@ -512,9 +517,13 @@ static int gmi_pend_trans_item_store (
 
 
 	for (i = 0; i < iov_len; i++) {
 	for (i = 0; i < iov_len; i++) {
 		gmi_pend_trans_item.iovec[i].iov_base = malloc (iovec[i].iov_len);
 		gmi_pend_trans_item.iovec[i].iov_base = malloc (iovec[i].iov_len);
+
 		if (gmi_pend_trans_item.iovec[i].iov_base == 0) {
 		if (gmi_pend_trans_item.iovec[i].iov_base == 0) {
 			goto error_iovec;
 			goto error_iovec;
 		}
 		}
+
+		memset (gmi_pend_trans_item.iovec[i].iov_base, 0, iovec[i].iov_len);
+
 		memcpy (gmi_pend_trans_item.iovec[i].iov_base, iovec[i].iov_base,
 		memcpy (gmi_pend_trans_item.iovec[i].iov_base, iovec[i].iov_base,
 			iovec[i].iov_len);
 			iovec[i].iov_len);
 		gmi_pend_trans_item.iovec[i].iov_len = iovec[i].iov_len;
 		gmi_pend_trans_item.iovec[i].iov_len = iovec[i].iov_len;
@@ -604,6 +613,8 @@ int gmi_mcast (
 
 
 	gmi_log_printf (gmi_log_level_debug, "MCASTING MESSAGE\n");
 	gmi_log_printf (gmi_log_level_debug, "MCASTING MESSAGE\n");
 
 
+	memset (pending_iovecs, 0, sizeof (struct iovec) * MAXIOVS);
+
 	/*
 	/*
 	 * Determine size of total message
 	 * Determine size of total message
 	 */
 	 */
@@ -642,7 +653,7 @@ int gmi_mcast (
 		}
 		}
 		pending_iovec_entries += 1;
 		pending_iovec_entries += 1;
 		if (packet_size >= FRAGMENT_SIZE || packet_size == total_size) {
 		if (packet_size >= FRAGMENT_SIZE || packet_size == total_size) {
-#ifdef DEBUG
+#ifdef DEBUGa
 for (i = 0; i < pending_iovec_entries; i++) {
 for (i = 0; i < pending_iovec_entries; i++) {
 	assert (pending_iovecs[i].iov_len < MESSAGE_SIZE_MAX);
 	assert (pending_iovecs[i].iov_len < MESSAGE_SIZE_MAX);
 	assert (pending_iovecs[i].iov_len >= 0);
 	assert (pending_iovecs[i].iov_len >= 0);
@@ -740,6 +751,9 @@ static int gmi_build_sockets (struct sockaddr_in *sockaddr_mcast,
 	struct ifreq interface;
 	struct ifreq interface;
 	int res;
 	int res;
 	
 	
+	memset (&mreq, 0, sizeof (struct ip_mreq));
+	memset (&interface, 0, sizeof (struct ifreq));
+
 	/*
 	/*
 	 * Determine the ip address bound to and the interface name
 	 * Determine the ip address bound to and the interface name
 	 */
 	 */
@@ -1033,6 +1047,7 @@ static int orf_token_mcast (
 		/*
 		/*
 		 * Build IO vector
 		 * Build IO vector
 		 */
 		 */
+		memset (&gmi_rtr_item, 0, sizeof (struct gmi_rtr_item));
 		gmi_rtr_item.iovec[0].iov_base = gmi_pend_trans_item->mcast;
 		gmi_rtr_item.iovec[0].iov_base = gmi_pend_trans_item->mcast;
 		gmi_rtr_item.iovec[0].iov_len = sizeof (struct mcast);
 		gmi_rtr_item.iovec[0].iov_len = sizeof (struct mcast);
 
 
@@ -1071,6 +1086,7 @@ static int orf_token_mcast (
 		/*
 		/*
 		 * Build multicast message
 		 * Build multicast message
 		 */
 		 */
+
 		msg_mcast.msg_name = &sockaddr_in_mcast;
 		msg_mcast.msg_name = &sockaddr_in_mcast;
 		msg_mcast.msg_namelen = sizeof (struct sockaddr_in);
 		msg_mcast.msg_namelen = sizeof (struct sockaddr_in);
 		msg_mcast.msg_iov = gmi_rtr_item.iovec;
 		msg_mcast.msg_iov = gmi_rtr_item.iovec;
@@ -1083,6 +1099,7 @@ static int orf_token_mcast (
 		 * Multicast message
 		 * Multicast message
 		 */
 		 */
 		res = sendmsg (gmi_fd_mcast, &msg_mcast, MSG_NOSIGNAL | MSG_DONTWAIT);
 		res = sendmsg (gmi_fd_mcast, &msg_mcast, MSG_NOSIGNAL | MSG_DONTWAIT);
+
 		/*
 		/*
 		 * An error here is recovered by the multicast algorithm
 		 * An error here is recovered by the multicast algorithm
 	 	 */
 	 	 */
@@ -1307,6 +1324,7 @@ static int orf_token_evs (
 	if (memb_state != MEMB_STATE_EVS) {
 	if (memb_state != MEMB_STATE_EVS) {
 		return (0);
 		return (0);
 	}
 	}
+	memset (trans_memb_list, 0, sizeof (struct sockaddr_in) * MAX_MEMBERS);
 
 
 	/*
 	/*
 	 * Delete form token timer since the token has been swallowed
 	 * Delete form token timer since the token has been swallowed