From 2fc9706a567c4c90eea256b12bf73350bd063ed3 Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Wed, 30 Nov 2011 07:00:47 +0000 Subject: =?UTF-8?q?2011-11-30=09Ralf=20Cors=C3=A9pius=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * librpc/src/rpc/clnt_udp.c (struct cu_data): Introduce unions _cu_inbuf, _cu_outbuf to avoid aliasing. --- cpukit/ChangeLog | 5 +++++ cpukit/librpc/src/rpc/clnt_udp.c | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'cpukit') diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 29343e7694..51e8f21539 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2011-11-30 Ralf Corsépius + + * librpc/src/rpc/clnt_udp.c (struct cu_data): + Introduce unions _cu_inbuf, _cu_outbuf to avoid aliasing. + 2011-11-28 Werner Almesberger PR 1961/cpukit diff --git a/cpukit/librpc/src/rpc/clnt_udp.c b/cpukit/librpc/src/rpc/clnt_udp.c index aeace640a8..369da95f2d 100644 --- a/cpukit/librpc/src/rpc/clnt_udp.c +++ b/cpukit/librpc/src/rpc/clnt_udp.c @@ -88,9 +88,17 @@ struct cu_data { XDR cu_outxdrs; u_int cu_xdrpos; u_int cu_sendsz; /* send size */ - char *cu_outbuf; + union { + u_int32_t *i32; + char *c; + } _cu_outbuf; +#define cu_outbuf _cu_outbuf.c u_int cu_recvsz; /* recv size */ - char cu_inbuf[1]; + union { + u_int32_t *i32; + char c[1]; + } _cu_inbuf; +#define cu_inbuf _cu_inbuf.c }; /* @@ -352,7 +360,7 @@ send_again: if (inlen < sizeof(u_int32_t)) continue; /* see if reply transaction id matches sent id */ - if (*((u_int32_t *)(cu->cu_inbuf)) != *((u_int32_t *)(cu->cu_outbuf))) + if (*(cu->_cu_inbuf.i32) != *(cu->_cu_outbuf.i32)) continue; /* we now assume we have the proper reply */ break; -- cgit v1.2.3