ifolder/net-libs/gsoap/files/gsoap-02-typepuns.diff

32 lines
788 B
Diff

From: Jan Engelhardt <jengelh@medozas.de>
Date: 2011-07-01 17:19:00 +0200
src: fix invocation of undefined behavior
The int type may have a stricter alignment than buf, and as such,
using *(int *)buf is prone to undefined behavior, usually manifesting
themselves in SIGBUS.
---
gsoap/stdsoap2.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: gsoap-2.8.3/gsoap/stdsoap2.c
===================================================================
--- gsoap-2.8.3.orig/gsoap/stdsoap2.c
+++ gsoap-2.8.3/gsoap/stdsoap2.c
@@ -2946,10 +2946,12 @@ int
SOAP_FMAC2
soap_rand()
{ unsigned char buf[4];
+ int r;
if (!soap_ssl_init_done)
soap_ssl_init();
RAND_pseudo_bytes(buf, 4);
- return *(int*)buf;
+ memcpy(&r, buf, sizeof(r));
+ return r;
}
#endif
#endif