From mboxrd@z Thu Jan 1 00:00:00 1970 From: cfeist@sourceware.org Date: 5 Feb 2008 22:16:51 -0000 Subject: [Cluster-devel] cluster/ccs/daemon cnx_mgr.c Message-ID: <20080205221651.17681.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL46 Changes by: cfeist at sourceware.org 2008-02-05 22:16:51 Modified files: ccs/daemon : cnx_mgr.c Log message: Pulled from RHEL4 branch. BZ 418961 Fix issue with endian conversion that caused problems for mixed architecture nodes on same subnet. Need to correct swap byte ordering of comm_header_t structure before copying into buffer and when dereferencing. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/cnx_mgr.c.diff?cvsroot=cluster&only_with_tag=RHEL46&r1=1.24.2.15&r2=1.24.2.15.4.1 --- cluster/ccs/daemon/cnx_mgr.c 2007/03/19 20:03:15 1.24.2.15 +++ cluster/ccs/daemon/cnx_mgr.c 2008/02/05 22:16:50 1.24.2.15.4.1 @@ -1363,18 +1363,19 @@ ch->comm_flags |= COMM_BROADCAST_FROM_QUORATE; } + swab_header(ch); memcpy(buffer, ch, sizeof(comm_header_t)); + swab_header(ch); /* Swab back to dip into ch for payload_size */ memcpy(buffer+sizeof(comm_header_t), payload, ch->comm_payload_size); log_dbg("Sending cluster.conf (version %d)...\n", get_doc_version(master_doc->od_doc)); sendlen = ch->comm_payload_size + sizeof(comm_header_t); - swab_header(ch); if(sendto(sfd, buffer, sendlen, 0, (struct sockaddr *)&addr, (socklen_t)len) < 0){ log_sys_err("Sendto failed"); error = -errno; } - + fail: if(buffer) free(buffer); if(payload) free(payload);