2011-11-30 Ralf Corsépius <ralf.corsepius@rtems.org>

* librpc/src/rpc/clnt_udp.c (struct cu_data):
	Introduce unions _cu_inbuf, _cu_outbuf to avoid aliasing.
This commit is contained in:
Ralf Corsepius
2011-11-30 07:00:47 +00:00
parent 3d83ae583c
commit 2fc9706a56
2 changed files with 16 additions and 3 deletions

View File

@@ -1,3 +1,8 @@
2011-11-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* librpc/src/rpc/clnt_udp.c (struct cu_data):
Introduce unions _cu_inbuf, _cu_outbuf to avoid aliasing.
2011-11-28 Werner Almesberger <werner@almesberger.net>
PR 1961/cpukit

View File

@@ -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;