Author: kp
Date: Tue Feb  4 04:29:53 2020
New Revision: 357489
URL: https://svnweb.freebsd.org/changeset/base/357489

Log:
  MFC r357234, r357365, r357375:
  
  tests: Test for an epair panic
  
  if_epair abused the ifr_data field to insert its second interface in
  IFC_IFLIST. If userspace provides a value for ifr_data it would get
  dereferenced by the kernel leading to a panic.
  
  Reported by:  Ilja Van Sprundel <[email protected]>

Added:
  stable/11/tests/sys/net/if_epair.c
     - copied, changed from r357234, head/tests/sys/net/if_epair.c
Modified:
  stable/11/tests/sys/net/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/tests/sys/net/Makefile
==============================================================================
--- stable/11/tests/sys/net/Makefile    Tue Feb  4 03:31:28 2020        
(r357488)
+++ stable/11/tests/sys/net/Makefile    Tue Feb  4 04:29:53 2020        
(r357489)
@@ -7,6 +7,7 @@ BINDIR=         ${TESTSDIR}
 
 ATF_TESTS_SH+= if_lagg_test
 ATF_TESTS_SH+= if_clone_test
+ATF_TESTS_C+=  if_epair
 
 # The tests are written to be run in parallel, but doing so leads to random
 # panics.  I think it's because the kernel's list of interfaces isn't properly
@@ -14,7 +15,7 @@ ATF_TESTS_SH+=        if_clone_test
 TEST_METADATA+=        is_exclusive=true
 
 MAN=
-PROG=          randsleep
+PROGS+=                randsleep
 
 WARNS?=                6
 

Copied and modified: stable/11/tests/sys/net/if_epair.c (from r357234, 
head/tests/sys/net/if_epair.c)
==============================================================================
--- head/tests/sys/net/if_epair.c       Tue Jan 28 22:46:51 2020        
(r357234, copy source)
+++ stable/11/tests/sys/net/if_epair.c  Tue Feb  4 04:29:53 2020        
(r357489)
@@ -25,17 +25,19 @@
  * $FreeBSD$
  */
 
+#include <sys/param.h>
 #include <sys/ioctl.h>
 #include <sys/linker.h>
 #include <sys/module.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 
 #include <net/if.h>
 
+#include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
+#include <strings.h>
 
 #include <atf-c.h>
 
@@ -51,7 +53,7 @@ ATF_TC_BODY(params, tc)
        int s;
 
        s = kldload("if_epair");
-       if (s != 0)
+       if (s == -1 && errno != EEXIST)
                atf_tc_fail("Failed to load if_epair");
 
        s = socket(AF_INET, SOCK_DGRAM, 0);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to