Hi,
I am the maintainer of openvpn in the OpenBSD ports tree. Here's
a report from Stefan Sperling (Cc'ed).
> An openvpn server running on OpenBSD/sparc64 6.1 crashes when a client
> connects and starts doing traffic. Is anyone else seeing this?
>
> (gdb) run
> Starting program: /usr/local/sbin/openvpn /etc/openvpn/server.conf
> (no debugging symbols found)
>
> Program received signal SIGBUS, Bus error.
> 0x000000a99df82664 in write_tun_header () from /usr/local/sbin/openvpn
> (gdb) bt
> #0 0x000000a99df82664 in write_tun_header () from /usr/local/sbin/openvpn
> #1 0x000000a99df136d4 in process_outgoing_tun () from /usr/local/sbin/openvpn
> #2 0x000000a99df31094 in tunnel_server_udp () from /usr/local/sbin/openvpn
> #3 0x000000a99df3a6ac in main () from /usr/local/sbin/openvpn
To work around this, the patch below (also written by Stefan) was
committed in our ports tree. TARGET_FREEBSD and TARGET_DRAGONFLY seem
to be affected too.
Thoughts?
diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c
index 3504fbf4..51a7f82d 100644
--- a/src/openvpn/tun.c
+++ b/src/openvpn/tun.c
@@ -1654,11 +1654,11 @@ write_tun_header(struct tuntap *tt, uint8_t *buf, int
len)
{
u_int32_t type;
struct iovec iv[2];
- struct ip *iph;
+ struct ip iph;
- iph = (struct ip *) buf;
+ memcpy(&iph, buf, sizeof(iph));
- if (iph->ip_v == 6)
+ if (iph.ip_v == 6)
{
type = htonl(AF_INET6);
}
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel