From 5ac0ebb1499ccc50d3caf968de61b218f2f14014 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Wed, 7 Jul 2004 21:12:01 +0000 Subject: [PATCH] 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 --- exec/gmi.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/exec/gmi.c b/exec/gmi.c index fabf0d90..6cc13c1c 100644 --- a/exec/gmi.c +++ b/exec/gmi.c @@ -331,7 +331,7 @@ static struct memb_join memb_join; 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 = { iov_base: iov_buffer, @@ -417,6 +417,8 @@ int gmi_init ( int res; 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++) { 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; struct gmi_pend_trans_item gmi_pend_trans_item; + + memset (&gmi_pend_trans_item, 0, sizeof (struct gmi_pend_trans_item)); + /* * Store pending item */ @@ -512,9 +517,13 @@ static int gmi_pend_trans_item_store ( for (i = 0; i < iov_len; i++) { gmi_pend_trans_item.iovec[i].iov_base = malloc (iovec[i].iov_len); + if (gmi_pend_trans_item.iovec[i].iov_base == 0) { 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, 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"); + memset (pending_iovecs, 0, sizeof (struct iovec) * MAXIOVS); + /* * Determine size of total message */ @@ -642,7 +653,7 @@ int gmi_mcast ( } pending_iovec_entries += 1; if (packet_size >= FRAGMENT_SIZE || packet_size == total_size) { -#ifdef DEBUG +#ifdef DEBUGa for (i = 0; i < pending_iovec_entries; i++) { assert (pending_iovecs[i].iov_len < MESSAGE_SIZE_MAX); assert (pending_iovecs[i].iov_len >= 0); @@ -740,6 +751,9 @@ static int gmi_build_sockets (struct sockaddr_in *sockaddr_mcast, struct ifreq interface; 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 */ @@ -1033,6 +1047,7 @@ static int orf_token_mcast ( /* * 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_len = sizeof (struct mcast); @@ -1071,6 +1086,7 @@ static int orf_token_mcast ( /* * Build multicast message */ + msg_mcast.msg_name = &sockaddr_in_mcast; msg_mcast.msg_namelen = sizeof (struct sockaddr_in); msg_mcast.msg_iov = gmi_rtr_item.iovec; @@ -1083,6 +1099,7 @@ static int orf_token_mcast ( * Multicast message */ res = sendmsg (gmi_fd_mcast, &msg_mcast, MSG_NOSIGNAL | MSG_DONTWAIT); + /* * An error here is recovered by the multicast algorithm */ @@ -1307,6 +1324,7 @@ static int orf_token_evs ( if (memb_state != MEMB_STATE_EVS) { return (0); } + memset (trans_memb_list, 0, sizeof (struct sockaddr_in) * MAX_MEMBERS); /* * Delete form token timer since the token has been swallowed