Module Name:    src
Committed By:   knakahara
Date:           Wed Mar 14 07:56:32 UTC 2018

Modified Files:
        src/sys/netinet6: in6_gif.c

Log Message:
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.


To generate a diff of this commit:
cvs rdiff -u -r1.90 -r1.91 src/sys/netinet6/in6_gif.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet6/in6_gif.c
diff -u src/sys/netinet6/in6_gif.c:1.90 src/sys/netinet6/in6_gif.c:1.91
--- src/sys/netinet6/in6_gif.c:1.90	Wed Jan 10 11:13:26 2018
+++ src/sys/netinet6/in6_gif.c	Wed Mar 14 07:56:32 2018
@@ -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 $	*/
 
 /*
@@ -31,7 +31,7 @@
  */
 
 #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
 #include "opt_inet.h"
@@ -459,9 +459,11 @@ in6_gif_ctlinput(int cmd, const struct s
 	if (!ip6)
 		return NULL;
 
-	if ((sc->gif_if.if_flags & IFF_RUNNING) == 0)
-		return NULL;
 	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) {
 		gif_putref_variant(var, &psref);
 		return NULL;

Reply via email to