Fix error checking in in6_gif_ctlinput().

if_gif.c:r1.133 introduces gif_update_variant() which ensure ifp->if_flags
is set IFF_RUNNING when gif_softc->gif_var->gv_{psrc,pdst} are not null.
So, in6_gif_ctlinput() is not required IFF_RUNNING checking. In contrast,
it is required gv_{psrc,pdst} NULL checking.
This commit is contained in:
knakahara 2018-03-14 07:56:32 +00:00
parent b30e74889c
commit 38db08c668
1 changed files with 6 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: in6_gif.c,v 1.90 2018/01/10 11:13:26 knakahara Exp $ */ /* $NetBSD: in6_gif.c,v 1.91 2018/03/14 07:56:32 knakahara Exp $ */
/* $KAME: in6_gif.c,v 1.62 2001/07/29 04:27:25 itojun Exp $ */ /* $KAME: in6_gif.c,v 1.62 2001/07/29 04:27:25 itojun Exp $ */
/* /*
@ -31,7 +31,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: in6_gif.c,v 1.90 2018/01/10 11:13:26 knakahara Exp $"); __KERNEL_RCSID(0, "$NetBSD: in6_gif.c,v 1.91 2018/03/14 07:56:32 knakahara Exp $");
#ifdef _KERNEL_OPT #ifdef _KERNEL_OPT
#include "opt_inet.h" #include "opt_inet.h"
@ -459,9 +459,11 @@ in6_gif_ctlinput(int cmd, const struct sockaddr *sa, void *d, void *eparg)
if (!ip6) if (!ip6)
return NULL; return NULL;
if ((sc->gif_if.if_flags & IFF_RUNNING) == 0)
return NULL;
var = gif_getref_variant(sc, &psref); var = gif_getref_variant(sc, &psref);
if (var->gv_psrc == NULL || var->gv_pdst == NULL) {
gif_putref_variant(var, &psref);
return NULL;
}
if (var->gv_psrc->sa_family != AF_INET6) { if (var->gv_psrc->sa_family != AF_INET6) {
gif_putref_variant(var, &psref); gif_putref_variant(var, &psref);
return NULL; return NULL;