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:
parent
b30e74889c
commit
38db08c668
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue