summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrad <brad@openbsd.org>2005-07-11 22:34:56 +0000
committerbrad <brad@openbsd.org>2005-07-11 22:34:56 +0000
commit18815a78943e584300ffa39b22e642f3464f6925 (patch)
treeed47b2128e7f368b31d5bc2b17f56cb6f6ad23f6
parentrev 1.32 (diff)
downloadwireguard-openbsd-18815a78943e584300ffa39b22e642f3464f6925.tar.xz
wireguard-openbsd-18815a78943e584300ffa39b22e642f3464f6925.zip
Don't install wrong IPv6 route by add command.
From ume FreeBSD ok deraadt@
-rw-r--r--usr.sbin/ppp/ppp/command.c9
-rw-r--r--usr.sbin/ppp/ppp/ncpaddr.c10
2 files changed, 14 insertions, 5 deletions
diff --git a/usr.sbin/ppp/ppp/command.c b/usr.sbin/ppp/ppp/command.c
index 5b004a71134..da9f74baa7e 100644
--- a/usr.sbin/ppp/ppp/command.c
+++ b/usr.sbin/ppp/ppp/command.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $OpenBSD: command.c,v 1.80 2005/02/17 03:00:12 mbalmer Exp $
+ * $OpenBSD: command.c,v 1.81 2005/07/11 22:34:56 brad Exp $
*/
#include <sys/param.h>
@@ -2384,6 +2384,9 @@ AddCommand(struct cmdargs const *arg)
struct ncpaddr gw;
struct ncprange dest;
struct in_addr host;
+#ifndef NOINET6
+ struct in6_addr host6;
+#endif
int dest_default, gw_arg, addrs;
if (arg->argc != arg->argn+3 && arg->argc != arg->argn+2)
@@ -2441,7 +2444,9 @@ AddCommand(struct cmdargs const *arg)
addrs |= ROUTE_GWHISADDR;
#ifndef NOINET6
} else if (strcasecmp(arg->argv[arg->argn + gw_arg], "HISADDR6") == 0) {
- ncpaddr_copy(&gw, &arg->bundle->ncp.ipv6cp.hisaddr);
+ if (!ncpaddr_getip6(&arg->bundle->ncp.ipv6cp.hisaddr, &host6))
+ memset(&host6, '\0', sizeof host6);
+ ncpaddr_setip6(&gw, &host6);
addrs |= ROUTE_GWHISADDR6;
#endif
} else {
diff --git a/usr.sbin/ppp/ppp/ncpaddr.c b/usr.sbin/ppp/ppp/ncpaddr.c
index cdaab1594de..051fe01c6a8 100644
--- a/usr.sbin/ppp/ppp/ncpaddr.c
+++ b/usr.sbin/ppp/ppp/ncpaddr.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $OpenBSD: ncpaddr.c,v 1.7 2004/11/17 02:31:30 itojun Exp $
+ * $OpenBSD: ncpaddr.c,v 1.8 2005/07/11 22:34:56 brad Exp $
*/
#include <sys/types.h>
@@ -905,7 +905,9 @@ ncprange_aton(struct ncprange *range, struct ncp *ncp, const char *data)
return 1;
#ifndef NOINET6
} else if (ncp && strncasecmp(data, "HISADDR6", len) == 0) {
- ncprange_sethost(range, &ncp->ipv6cp.hisaddr);
+ range->ncprange_family = AF_INET6;
+ range->ncprange_ip6addr = ncp->ipv6cp.hisaddr.ncpaddr_ip6addr;
+ range->ncprange_ip6width = 128;
return 1;
#endif
} else if (ncp && strncasecmp(data, "MYADDR", len) == 0) {
@@ -916,7 +918,9 @@ ncprange_aton(struct ncprange *range, struct ncp *ncp, const char *data)
return 1;
#ifndef NOINET6
} else if (ncp && strncasecmp(data, "MYADDR6", len) == 0) {
- ncprange_sethost(range, &ncp->ipv6cp.myaddr);
+ range->ncprange_family = AF_INET6;
+ range->ncprange_ip6addr = ncp->ipv6cp.myaddr.ncpaddr_ip6addr;
+ range->ncprange_ip6width = 128;
return 1;
#endif
} else if (ncp && strncasecmp(data, "DNS0", len) == 0) {