summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2008-08-28 16:58:30 +0000
committerjkim <jkim@FreeBSD.org>2008-08-28 16:58:30 +0000
commitc22e2b30b24113bcb2330e0ae4832135febca2a7 (patch)
tree47752efc7858dc984da748bc615fe1ae6e91a6a6 /tools
parent841dbb1bffc67cc5abbd073d4025888f051e1dbe (diff)
downloadFreeBSD-src-c22e2b30b24113bcb2330e0ae4832135febca2a7.zip
FreeBSD-src-c22e2b30b24113bcb2330e0ae4832135febca2a7.tar.gz
Add a test case for uninitialized scratch memory (for JIT compiler).
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/bpf/bpf_filter/Makefile4
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0080.h64
2 files changed, 66 insertions, 2 deletions
diff --git a/tools/regression/bpf/bpf_filter/Makefile b/tools/regression/bpf/bpf_filter/Makefile
index cadf844..7f0c998 100644
--- a/tools/regression/bpf/bpf_filter/Makefile
+++ b/tools/regression/bpf/bpf_filter/Makefile
@@ -19,7 +19,7 @@ TEST_CASES?= test0001 test0002 test0003 test0004 \
test0065 test0066 test0067 test0068 \
test0069 test0070 test0071 test0072 \
test0073 test0074 test0075 test0076 \
- test0077 test0078 test0079
+ test0077 test0078 test0079 test0080
SYSDIR?= ${.CURDIR}/../../../../sys
@@ -62,7 +62,7 @@ all: ${TEST_CASES}
.if defined(BPF_BENCHMARK)
@-time ${.CURDIR}/${TEST}
.else
- @-${.CURDIR}/${TEST}
+ @-env MALLOC_OPTIONS=J ${.CURDIR}/${TEST}
.endif
@rm -f ${.CURDIR}/${TEST}
.endfor
diff --git a/tools/regression/bpf/bpf_filter/tests/test0080.h b/tools/regression/bpf/bpf_filter/tests/test0080.h
new file mode 100644
index 0000000..3ec60ae
--- /dev/null
+++ b/tools/regression/bpf/bpf_filter/tests/test0080.h
@@ -0,0 +1,64 @@
+/*-
+ * Test 0080: Check uninitialized scratch memory.
+ *
+ * Note: This behavior is not guaranteed with bpf_filter(9).
+ *
+ * $FreeBSD$
+ */
+
+/* BPF program */
+struct bpf_insn pc[] = {
+ BPF_STMT(BPF_LDX|BPF_IMM, 0xffffffff),
+ BPF_STMT(BPF_LD|BPF_MEM, 0),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 30, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 1),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 28, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 2),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 26, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 3),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 24, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 4),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 22, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 5),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 20, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 6),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 18, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 7),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 16, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 8),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 14, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 9),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 12, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 10),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 10, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 11),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 8, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 12),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 6, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 13),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 4, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 14),
+ BPF_JUMP(BPF_JMP|BPF_JSET|BPF_X, 2, 0, 0),
+ BPF_STMT(BPF_LD|BPF_MEM, 15),
+ BPF_STMT(BPF_RET|BPF_A, 0),
+};
+
+/* Packet */
+u_char pkt[] = {
+ 0x00,
+};
+
+/* Packet length seen on wire */
+u_int wirelen = sizeof(pkt);
+
+/* Packet length passed on buffer */
+u_int buflen = sizeof(pkt);
+
+/* Invalid instruction */
+int invalid = 0;
+
+/* Expected return value */
+u_int expect = 0;
+
+/* Expeced signal */
+int expect_signal = 0;
OpenPOWER on IntegriCloud