Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys Check error of rt_setgate and rt_settag
details: https://anonhg.NetBSD.org/src/rev/1ed6112de247
branches: trunk
changeset: 344870:1ed6112de247
user: ozaki-r <ozaki-r%NetBSD.org@localhost>
date: Mon Apr 25 14:38:08 2016 +0000
description:
Check error of rt_setgate and rt_settag
diffstat:
sys/net/route.c | 20 +++++++++++++-------
sys/net/rtsock.c | 12 ++++++++----
sys/netinet/if_arp.c | 8 ++++++--
sys/netinet6/nd6.c | 10 ++++++++--
4 files changed, 35 insertions(+), 15 deletions(-)
diffs (142 lines):
diff -r 81f686becb5d -r 1ed6112de247 sys/net/route.c
--- a/sys/net/route.c Mon Apr 25 14:30:42 2016 +0000
+++ b/sys/net/route.c Mon Apr 25 14:38:08 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: route.c,v 1.163 2016/04/25 14:30:42 ozaki-r Exp $ */
+/* $NetBSD: route.c,v 1.164 2016/04/25 14:38:08 ozaki-r Exp $ */
/*-
* Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.163 2016/04/25 14:30:42 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.164 2016/04/25 14:38:08 ozaki-r Exp $");
#include <sys/param.h>
#ifdef RTFLUSH_DEBUG
@@ -549,10 +549,12 @@
* Smash the current notion of the gateway to
* this destination. Should check about netmask!!!
*/
- rt->rt_flags |= RTF_MODIFIED;
- flags |= RTF_MODIFIED;
+ error = rt_setgate(rt, gateway);
+ if (error == 0) {
+ rt->rt_flags |= RTF_MODIFIED;
+ flags |= RTF_MODIFIED;
+ }
stat = &rtstat.rts_newgateway;
- rt_setgate(rt, gateway);
}
} else
error = EHOSTUNREACH;
@@ -825,8 +827,12 @@
}
rt_set_ifa(rt, ifa);
- if (info->rti_info[RTAX_TAG] != NULL)
- rt_settag(rt, info->rti_info[RTAX_TAG]);
+ if (info->rti_info[RTAX_TAG] != NULL) {
+ const struct sockaddr *tag;
+ tag = rt_settag(rt, info->rti_info[RTAX_TAG]);
+ if (tag == NULL)
+ senderr(ENOBUFS);
+ }
RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
if (info->rti_info[RTAX_IFP] != NULL &&
(ifa2 = ifa_ifwithnet(info->rti_info[RTAX_IFP])) != NULL &&
diff -r 81f686becb5d -r 1ed6112de247 sys/net/rtsock.c
--- a/sys/net/rtsock.c Mon Apr 25 14:30:42 2016 +0000
+++ b/sys/net/rtsock.c Mon Apr 25 14:38:08 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.183 2016/04/25 10:55:01 ozaki-r Exp $ */
+/* $NetBSD: rtsock.c,v 1.184 2016/04/25 14:38:08 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.183 2016/04/25 10:55:01 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.184 2016/04/25 14:38:08 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -745,8 +745,12 @@
if (error != 0)
senderr(error);
}
- if (info.rti_info[RTAX_TAG])
- rt_settag(rt, info.rti_info[RTAX_TAG]);
+ if (info.rti_info[RTAX_TAG]) {
+ const struct sockaddr *tag;
+ tag = rt_settag(rt, info.rti_info[RTAX_TAG]);
+ if (tag == NULL)
+ senderr(ENOBUFS);
+ }
/* new gateway could require new ifaddr, ifp;
flags may also be different; ifp may be specified
by ll sockaddr when protocol address is ambiguous */
diff -r 81f686becb5d -r 1ed6112de247 sys/netinet/if_arp.c
--- a/sys/netinet/if_arp.c Mon Apr 25 14:30:42 2016 +0000
+++ b/sys/netinet/if_arp.c Mon Apr 25 14:38:08 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_arp.c,v 1.208 2016/04/19 04:13:56 ozaki-r Exp $ */
+/* $NetBSD: if_arp.c,v 1.209 2016/04/25 14:38:08 ozaki-r Exp $ */
/*-
* Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.208 2016/04/19 04:13:56 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.209 2016/04/25 14:38:08 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_ddb.h"
@@ -506,6 +506,10 @@
break;
case RTM_ADD:
gate = arp_setgate(rt, gate, info->rti_info[RTAX_NETMASK]);
+ if (gate == NULL) {
+ log(LOG_ERR, "%s: arp_setgate failed\n", __func__);
+ break;
+ }
if ((rt->rt_flags & RTF_CONNECTED) ||
(rt->rt_flags & RTF_LOCAL)) {
/*
diff -r 81f686becb5d -r 1ed6112de247 sys/netinet6/nd6.c
--- a/sys/netinet6/nd6.c Mon Apr 25 14:30:42 2016 +0000
+++ b/sys/netinet6/nd6.c Mon Apr 25 14:38:08 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6.c,v 1.191 2016/04/21 05:07:50 ozaki-r Exp $ */
+/* $NetBSD: nd6.c,v 1.192 2016/04/25 14:38:08 ozaki-r Exp $ */
/* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.191 2016/04/21 05:07:50 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.192 2016/04/25 14:38:08 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -1389,6 +1389,12 @@
rt_setgate(rt, &u.sa);
gate = rt->rt_gateway;
RT_DPRINTF("rt_getkey(rt) = %p\n", rt_getkey(rt));
+ if (gate == NULL) {
+ log(LOG_ERR,
+ "%s: rt_setgate failed on %s\n", __func__,
+ if_name(ifp));
+ break;
+ }
RT_DPRINTF("rt_getkey(rt) = %p\n", rt_getkey(rt));
if ((rt->rt_flags & RTF_CONNECTED) != 0)
Home |
Main Index |
Thread Index |
Old Index