aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/net/rtsock.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index bbdd0279a04c..6775f09cfe50 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -1124,9 +1124,12 @@ route_output(struct mbuf *m, struct socket *so, ...)
rc = rc_simple;
}
#endif
+ /* nh MAY be empty if RTM_CHANGE request is no-op */
nh = rc.rc_nh_new;
- rtm->rtm_index = nh->nh_ifp->if_index;
- rtm->rtm_flags = rc.rc_rt->rte_flags | nhop_get_rtflags(nh);
+ if (nh != NULL) {
+ rtm->rtm_index = nh->nh_ifp->if_index;
+ rtm->rtm_flags = rc.rc_rt->rte_flags | nhop_get_rtflags(nh);
+ }
}
break;
@@ -1163,7 +1166,7 @@ route_output(struct mbuf *m, struct socket *so, ...)
senderr(EOPNOTSUPP);
}
- if (error == 0) {
+ if (error == 0 && nh != NULL) {
error = update_rtm_from_rc(&info, &rtm, alloc_len, &rc, nh);
/*
* Note that some sockaddr pointers may have changed to