ports/165997: [PATCH] security/openconnect: fix on FreeBSD 10.0
Stanislav Sedov
stas at deglitch.com
Tue Mar 13 07:00:04 UTC 2012
>Number: 165997
>Category: ports
>Synopsis: [PATCH] security/openconnect: fix on FreeBSD 10.0
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Mar 13 07:00:03 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Stanislav Sedov
>Release: FreeBSD 10.0-CURRENT amd64
>Organization:
Deglitch Networks
>Environment:
System: FreeBSD orion.SpringDaemons.com 10.0-CURRENT FreeBSD 10.0-CURRENT #11 r232841M: Sun Mar 11 17:06:29 PDT
>Description:
- The SIOCSIFADDR ioctl was dropped on FreeBSD 10.0. Use SIOCAIFADDR instead.
This PR depends on ports/165992.
Added file(s):
- files/patch-tun.c
Port maintainer (dgerow at afflictions.org) is cc'd.
Generated with FreeBSD Port Tools 0.99_4 (mode: change, diff: suffix)
>How-To-Repeat:
>Fix:
--- openconnect-3.15_1.patch begins here ---
diff -ruN --exclude=CVS ../openconnect.orig/Makefile ./Makefile
--- ../openconnect.orig/Makefile 2012-03-12 22:48:24.000000000 -0700
+++ ./Makefile 2012-03-12 22:48:42.000000000 -0700
@@ -7,7 +7,7 @@
PORTNAME= openconnect
PORTVERSION= 3.15
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= security
MASTER_SITES= ftp://ftp.infradead.org/pub/openconnect/ \
CRITICAL
diff -ruN --exclude=CVS ../openconnect.orig/files/patch-tun.c ./files/patch-tun.c
--- ../openconnect.orig/files/patch-tun.c 1969-12-31 16:00:00.000000000 -0800
+++ ./files/patch-tun.c 2012-03-12 22:46:33.000000000 -0700
@@ -0,0 +1,56 @@
+--- tun.c.orig 2011-11-24 08:18:34.000000000 -0800
++++ tun.c 2012-03-12 22:46:30.000000000 -0700
+@@ -38,6 +38,9 @@
+ #include <arpa/inet.h>
+ #include <errno.h>
+ #include <ctype.h>
++#if defined(__FreeBSD__)
++#include <sys/param.h> /* For __FreeBSD_version */
++#endif
+ #if defined(__sun__)
+ #include <stropts.h>
+ #include <sys/sockio.h>
+@@ -109,9 +112,43 @@
+
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = inet_addr(vpninfo->vpn_addr);
++
++ /*
++ * SIOCSIFADDR ioctl was dropped in FreeBSD 10.0
++ */
++#if defined(__FreeBSD__) && __FreeBSD_version > 1000004
++ {
++ struct ifaliasreq ifra;
++ struct sockaddr_in *sin;
++
++ memset(&ifra, 0, sizeof(ifra));
++ strncpy(ifra.ifra_name, vpninfo->ifname, sizeof(ifra.ifra_name) - 1);
++
++ /* Set source address. */
++ sin = (struct sockaddr_in *)&(ifra.ifra_addr);
++ memcpy(sin, &addr, sizeof(struct sockaddr_in));
++ sin->sin_len = sizeof(*sin);
++
++ /* Set destination address. */
++ sin = (struct sockaddr_in *)&(ifra.ifra_broadaddr);
++ memcpy(sin, &addr, sizeof(struct sockaddr_in));
++ sin->sin_len = sizeof(*sin);
++
++ /* Set mask address. */
++ sin = (struct sockaddr_in *)&(ifra.ifra_mask);
++ addr.sin_family = AF_INET;
++ addr.sin_addr.s_addr = 0xffffffff;
++ memcpy(sin, &addr, sizeof(struct sockaddr_in));
++ sin->sin_len = sizeof(*sin);
++
++ if (ioctl(net_fd, SIOCAIFADDR, &ifra) < 0)
++ perror(_("SIOCAIFADDR"));
++ }
++#else
+ memcpy(&ifr.ifr_addr, &addr, sizeof(addr));
+ if (ioctl(net_fd, SIOCSIFADDR, &ifr) < 0)
+ perror(_("SIOCSIFADDR"));
++#endif
+ }
+
+ ifr.ifr_mtu = vpninfo->mtu;
--- openconnect-3.15_1.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list