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
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to